![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=1739254252-G5oL3sFAxMrAI0bqep1NlFu8anf1croi-0-f654cd9adb3e37a0aa3d5dd856400fd2)
图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=1739254252-LZv0qI9Brjpwd5iQwboUlXH7syagFA6L-0-d0dfcbf9277c9b855b33aacb11699392)
程序运行结果如图4.5所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P66_13359.jpg?sign=1739254252-dpWb3zrwUgsg3nw03qquAySvFDmsE5dy-0-46b626d63b6928a1e1a8ca2fe708d5d1)
图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=1739254252-sXcTRiFB4KveiXvwjfI0tFlObVpsETDO-0-d48ba5994b6658ac22ba3ba5b88dd41c)
程序运行结果如图4.6所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_13463.jpg?sign=1739254252-prEm5QwJEPgukL2oLlPMlVk2ssrdUWgL-0-c84ead2b6cb58abb9175ca19a25edd4c)
图4.6 超时异常信息
如果需要更精确地设置超时,可以使用Timeout实例对象,在该对象中可以单独设置连接超时与读取超时。示例代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52556.jpg?sign=1739254252-QA7MupOzNnTjrXtwTKvRnQw9braUrThN-0-3329512b1bc356cd8ced6181ecc1adf1)
或者是
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52557.jpg?sign=1739254252-mvW8jLzA3AAI4UVWHeSXpYB34Q0W9lWI-0-ff19c14846ec2f998fad1f61458ca208)
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=1739254252-jo79V2pb6zYNPCKk0B1gjaU1eJALQYs0-0-d9610abba65300a2dd8ba09b19dc85c8)
程序运行结果如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52559.jpg?sign=1739254252-ie8vHHofBLBmrgmrXqExbfk6ovG7hFdC-0-802f1d35c25eec9193bc462d30947802)
注意
免费代理存活的时间较短,提醒读者使用正确有效的代理IP。