![Python网络爬虫从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/915/44509915/b_44509915.jpg)
4.3 复杂请求的发送
4.3.1 设置请求头
大多数的服务器都会检测请求头信息,判断当前请求是否来自浏览器的请求。使用request()方法设置请求头信息时,只需要为headers参数指定一个有效的字典(dict)类型的请求头信息即可。所以在设置请求头信息前,需要在浏览器中找到一个有效的请求头信息,以火狐浏览器为例,首先按F12键打开“开发者工具箱”,然后单击“网络”,接着在浏览器地址栏中任意打开一个网页(如https://www.baidu.com/),在请求列表中选中一项请求信息,最后在“消息头”中找到请求头信息。具体步骤如图4.4所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P65_53117.jpg?sign=1739087140-qmXe8l5ol5aPfaX9T64Xdj5uICkeL9Kk-0-28e54b46a3dc55db7325a72a205b0eee)
图4.4 获取请求头信息
【例4.8】 设置请求头。(实例位置:资源包\Code\04\08)
请求头信息获取完成以后,将User-Agent设置为字典(dict)数据中的键,后面的数据设置为字典(dict)中value。示例代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P66_52554.jpg?sign=1739087140-fvw3H0NflKPHlzZUQbDlMcLw5pdSBA10-0-ae00658ce6cf161c0ad25d824fa5ac72)
程序运行结果如图4.5所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P66_13359.jpg?sign=1739087140-SuRdD41c8BhY7tmTDqjV17xt7eYFFCkb-0-fd2c75fd44d59883a9287659e47e5f47)
图4.5 查看返回的请求头信息
4.3.2 设置超时
【例4.9】 设置超时。(实例位置:资源包\Code\04\09)
在没有特殊要求的情况下,可以将设置超时的参数与时间填写在request()方法或者PoolManager()实例对象中。示例代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P66_52555.jpg?sign=1739087140-85CQ2eVbFne3B1NlFq3kX4UEp1DQy3rG-0-d242cec98843b8815c6d1a0eeaaa4331)
程序运行结果如图4.6所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_13463.jpg?sign=1739087140-rgm0sEJtQKDgc0XPyyjR338QR5moYAUE-0-ec611d5ff14c9e3869e352e39d05e78d)
图4.6 超时异常信息
如果需要更精确地设置超时,可以使用Timeout实例对象,在该对象中可以单独设置连接超时与读取超时。示例代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52556.jpg?sign=1739087140-3PLJHO4bzsyqz2unERgIQM4XEHJu7y8Y-0-89cd17d3d5c03c7309c4b239eadb5cbb)
或者是
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52557.jpg?sign=1739087140-USxwpFMRj0B6RxZjysLHl4BO3l6jsgFv-0-346aa1d9143c3b795c9a89bb4ea6d152)
4.3.3 设置代理
【例4.10】 设置代理。(实例位置:资源包\Code\04\10)
在设置代理IP时,需要创建ProxyManager对象,在该对象中最好填写两个参数。一个是proxy_url,表示需要使用的代理IP;另一个参数为headers,就是为了模拟浏览器请求,避免后台服务器发现。示例代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52558.jpg?sign=1739087140-Xcs7tYJe1czzKwRlOD8xneai4kq1VrQv-0-9bf8e71b2391f974944840c56667e427)
程序运行结果如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52559.jpg?sign=1739087140-9qC0koSpaokpBMcC1crjtYMuLCMrBWiv-0-47ed803d3dd193b08d2365b176be744e)
注意
免费代理存活的时间较短,提醒读者使用正确有效的代理IP。