python⽹络爬⾍与信息提取_北京理⼯⼤学_Python⽹络爬⾍与
信息提取(⼀)
学习 北京理⼯⼤学 嵩天 课程笔记
课程体系结构:
1、Requests框架:⾃动爬取HTML页⾯与⾃动⽹络请求提交
2、:⽹络爬⾍排除标准
3、BeautifulSoup框架:解析HTML页⾯
4、Re框架:正则框架,提取页⾯关键信息
5、Scrapy框架:⽹络爬⾍原理介绍,专业爬⾍框架介绍
理念:The Website is the API ...
Python语⾔常⽤的IDE⼯具
⽂本⼯具类IDE:
IDLE、Notepad++、Sublime Text、Vim & Emacs、Atom、Komodo Edit
集成⼯具IDE:
PyCharm、Wing、PyDev & Eclipse、Visual Studio、Anaconda & Spyder、Canopy
·IDLE是Python⾃带的默认的常⽤的⼊门级编写⼯具,它包含交互式⽂件式两种⽅式。适⽤于较短的程序。
·Sublime Text是专为程序员开发的第三⽅专⽤编程⼯具,可以提⾼编程体验,具有多种编程风格。
·Wing是Wingware公司提供的收费IDE,调试功能丰富,具有版本控制,版本同步功能,适合于多⼈共同开发。适⽤于编写⼤型程序。·Visual Studio是微软公司维护的,可以通过配置PTVS编写Python,主要以Windows环境为主,调试功能丰富。
·Eclipse是⼀款开源的IDE开发⼯具,可以通过配置PyDev来编写Python,但是配置过程复杂,需要有⼀定的开发经验。
·
PyCharm分为社区版和专业版,社区版免费,具有简单、集成度⾼的特点,适⽤于编写较复杂的⼯程。
适⽤于科学计算、数据分析的IDE:
·Canopy是由Enthought公司维护的收费⼯具,⽀持近500个第三⽅库,适合科学计算领域应⽤开发。
·Anaconda是开源免费的,⽀持近800个第三⽅库。
Requests库⼊门
Requests的安装:
Requests库是⽬前公认的爬取⽹页最好的Python第三⽅库,具有简单、简捷的特点。
在"C:\Windows\System32"中到"",使⽤管理员⾝份运⾏,在命令⾏中输⼊:“pip install requests”运⾏。
使⽤IDLE测试Requests库:
>>> import requests
>>> r = ("www.baidu")#抓取百度页⾯
>>> r.status_code
200
>>> r.encoding = 'utf-8'
>>> r.text
Requests库的7个主要⽅法
⽅法
说明
构造⼀个请求,⽀撑以下各⽅法的基础⽅法
<()
获取HTML⽹页的主要⽅法,对应于HTTP的GET
requests.head()
获取HTML⽹页头信息的⽅法,对应于HTTP的HEAD
requests.post()
向HTML⽹页提交POST请求的⽅法,对应于HTTP的POST
requests.put()
向HTML⽹页提交PUT请求的⽅法,对应于HTTP的PUT
requests.patch()
el表达式字符串拼接向HTML⽹页提交局部修改请求,对应于HTTP的PATCH
requests.delete()
向HTML页⾯提交删除请求,对应于HTTP的DELET
get()⽅法
r = (url)
get()⽅法构造⼀个向服务器请求资源的Request对象,返回⼀个包含服务器资源的Response对象。(url, params=None, **kwargs)
ssm框架的流程和原理url:拟获取页⾯的url链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问参数
Requests库的2个重要对象
· Request
· Response:Response对象包含爬⾍返回的内容
Response对象的属性
tableau退出中国
r.status_code :HTTP请求的返回状态,200表⽰连接成功,404表⽰失败
< :HTTP响应内容的字符串形式,即,url对应的页⾯内容
r.apparent_encoding : 从内容中分析出的相应内容编码⽅式(备选编码⽅式)
r.apparent_encoding :根据⽹页内容分析出的编码⽅式可以 看作是r.encoding的备选。
Response的编码:
r.apparent_encoding : 根据⽹页内容分析出的编码⽅式,可以看作r.encoding的备选
爬取⽹页的通⽤代码框架
Requests库的异常
异常
说明
requests.ConnectionError
⽹络连接错误异常,如DNS查询失败拒绝连接等
登录页面样式requests.HTTPError
HTTP错误异常
requests.URLRequired
URL缺失异常
requests.ToolManyRedirects
超过最⼤重定向次数,产⽣重定向异常
requests.ConnectTimeout
连接远程服务器超时异常
requests.Timeout
请求URL超时,尝试超时异常
Response的异常
r.raise_for_status() : 如果不是200,产⽣异常requests.HTTPError;
在⽅法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利⽤try-except进⾏异常处理
import requests
def getHTMLText(url):
try:
r = (url, timeout=30)
r.raise_for_status() # 如果状态不是200,引发HTTPError异常
except:
return "产⽣异常"
if __name__ == "__main__":
url = "www.baidu"
print(getHTMLText(url))
通⽤代码框架,可以使⽤户爬取⽹页变得更有效,更稳定、可靠。
HTTP协议
HTTP,Hypertext Transfer Protocol,超⽂本传输协议。
HTTP是⼀个基于“请求与响应”模式的、⽆状态的应⽤层协议。
HTTP协议采⽤URL作为定位⽹络资源的标识。
· host:合法的Internet主机域名或IP地址
· port:端⼝号,缺省端⼝号为80
· path:请求资源的路径
HTTP URL的理解:
URL是通过HTTP协议存取资源的Internet路径,⼀个URL对应⼀个数据资源。HTTP协议对资源的操作
⽅法
说明
GET
请求获取URL位置的资源
HEAD
python请求并解析json数据请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST在线课程招标
请求向URL位置的资源后附加新的数据
PUT
请求向URL位置存储⼀个资源,覆盖原URL位置资源
PATCH
请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE
请求删除URL位置存储的资源
理解PATCH和PUT的区别
假设URL位置有⼀组数据UserInfo,包括UserID、UserName等20个字段。需求:⽤户修改了UserName,其他不变。
· 采⽤PATCH,仅向URL提交UserName的局部更新请求。
· 采⽤PUT,必须将所有20个字段⼀并提交到URL,未提交字段被删除。
PATCH的主要好处:节省⽹络带宽
Requests库主要⽅法解析
· method:请求⽅式,对应get/put/post等7种
例: r = quest('OPTIONS', url, **kwargs)
· url:拟获取页⾯的url链接
· **kwargs:控制访问的参数,共13个,均为可选项
params:字典或字节序列,作为参数增加到url中;
kv = {'key1':'value1', 'key2':'value2'}
r = quest('GET', 'python123.io/ws',params=kv) print(r.url)
'''
'''
data:字典、字节序列或⽂件对象,作为Request的内容;
json:JSON格式的数据,作为Request的内容;
headers:字典,HTTP定制头;
hd = {'user-agent':'Chrome/10'}
r = quest('POST','www.yanlei.shop',headers=hd) cookies:字典或CookieJar,Request中的cookie;
auth:元组,⽀持HTTP认证功能;
files:字典类型,传输⽂件;
fs = {'file':open('data.xls', 'rb')}
r = quest('POST','python123.io/ws',files=fs) timeout:设定超时时间,秒为单位;
proxies:字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects:True/False,默认为True,重定向开关;
stream:True/False,默认为True,获取内容⽴即下载开关;
verify:True/False,默认为True,认证SSL证书开关;
cert:本地SSL证书路径
#⽅法及参数
<(url, params=None, **kwargs)
requests.head(url, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。