目录
一、使用urllib3实现HTTP请求
1.生成请求
2.处理请求头
3.Timeout设置
4.请求重试设置
5.生成完整HTTP请求
二、使用requests库实现HTTP请求
解决字符编码问题
三、解析网页
1.元素面板
2.源代码面板
3.网络面板
四、使用正则表达式解析网页
1. Python正则表达式:寻找字符串中的姓名和电话号码
完整代码
五、使用Xpath解析网页
1.基本语法
2.谓语
3. 功能函数
4.谷歌开发者工具使用
六、数据存储
1.以json格式存储
一、使用urllib3实现HTTP请求
1.生成请求
通过request方法生成请求,原型如下
urllib3.request(method,url,fields=None,headers=None,**urlopen_kw)
参数说明method接收string。表示请求的类型,如"GET"(通常使用)、“HEAD”、"DELETE"等,无默认值
url接收string。表示字符串形式的网址。无默认值
fields接收dict。表示请求类型所带的参数。默认为None
headers接收dict。表示请求头所带参数。默认为None
**urlopen_kw:接收dict和python中的数据类型的数据,依据具体需求及请求的类型可添加的参数,通常参数赋值为字典类型或者具体数据
code:
import urllib3
http = urllib3.PoolManager()
rq = http.request('GET',url='http://www.pythonscraping.com/pages/page3.html')
print('服务器响应码:', rq.status)
print('响应实体:', rq.data)
2.处理请求头
传入headers参数可通过定义一个字典类型实现,定义一个包含User-Agent信息的字典,使用浏览器为火狐和chrome浏览器,操作系统为"Window NT 6.1;Win64; x64",向网站"http://www.tipdm/index.html"发送带headers参数的GET请求,hearders参数为定义的User-Agent字典
import urllib3
http = urllib3.PoolManager()
head = {'User-Agent':'Window NT 6.1;Win64; x64'}
http.request('GET',url='http://www.pythonscraping.com/pages/page3.html',headers=head)
3.Timeout设置
为防止因网络不稳定等原因丢包,可在请求中增加timeout参数设置,通常为浮点数,可直接在url后设置该次请求的全部参数,也可以分别设置这次请求的连接与读取timeout参数,在PoolManager实例中设置timeout参数可应用至该实例的全部请求中
直接设置
http.request('GET',url='',headers=head,timeout=3.0)
#超过3s的话超时终止
http.request('GET',url='http://www.pythonscraping.com/pages/page3.html',headers=head,timeout=urllib3.Timeout(connect=1.0,read=2.0))
#链接超过1s,读取超过2s终止
应用至该实例的全部请求中
import urllib3
http = urllib3.PoolManager(timeout=4.0)
head = {'User-Agent':'Window NT 6.1;Win64; x64'}
http.request('GET',url='http://www.pythonscraping.com/pages/page3.html',headers=head)
#超过4s超时
4.请求重试设置
urllib3库可以通过设置retries参数对重试进行控制。默认进行3次请求重试,并进行3次重定向。自定义重试次数通过赋值一个整型给retries参数实现,可通过定义retries实例来定制请求重试次数及重定向次数。若需要同时关闭请求重试及重定向则可以将retries参数赋值为False,仅关闭重定向则将redirect参数赋值为False。与Timeout设置类似,可以在PoolManager实例中设置retries参数控制全部该实例下的请求重试策略。
直接设置
在这里插入代码片
应用至该实例的全部请求中
import urllib3
http = urllib3.PoolManager(timeout=4.0,retries=10)
head = {'User-Agent':'Window NT 6.1;Win64; x64'}
http.request('GET',url='http://www.pythonscraping.com/pages/page3.html',headers=head)
#超过4s超时 重试10次
5.生成完整HTTP请求
使用urllib3库实现向http://www.pythonscraping.com/pages/page3.html生成一个完整的请求,该请求应当包含链接、请求头、超时时间和重试次数设置。