![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=1739273219-pHCuz3mmjD0Odmy6JjBTDz4DdcC6AXEg-0-0069edfeeb51a47d3b346ee1d4400825)
图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=1739273219-x1TmUG2aMcSHGVLha1DUANarTUqTe64p-0-a3206d6bb9e7db58e337ae43d74b29ce)
程序运行结果如图4.5所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P66_13359.jpg?sign=1739273219-4qk3XCoGlQQz3qg8GbZN2cHj9yYZEA1D-0-d277cca9642afbe7a03b11ea3d882df8)
图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=1739273219-pvaYr4XFsSa3KXleh0cgvIzPc6gvxFha-0-056bae4450d0d1ee1fdbe71f039611b5)
程序运行结果如图4.6所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_13463.jpg?sign=1739273219-46d4kmqIJ0vu8dfkUVnR4ULPci41HWcA-0-88e0d1269838d9cd9c0e59c050db6cf9)
图4.6 超时异常信息
如果需要更精确地设置超时,可以使用Timeout实例对象,在该对象中可以单独设置连接超时与读取超时。示例代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52556.jpg?sign=1739273219-CZrW7Fz7arm1qtY9124ttU7CigExTyJR-0-9a95e9ea1dafebc38daaf878040482f4)
或者是
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52557.jpg?sign=1739273219-PS5nZRXzajDqzY7afXLQsUe70ftuN5Hd-0-b9208b839780ee5ee30a672ec47e35a2)
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=1739273219-dB0mJ8XeWgxnn9N8Zrnvha3Qh4Cgmazv-0-9c51dbb421528250146de8b3c202afeb)
程序运行结果如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P67_52559.jpg?sign=1739273219-q6t0AzCKPKy7XZfcZaCk4xRpknIDw3JM-0-e41e4de8c87167dd18d1c83bab5b99e5)
注意
免费代理存活的时间较短,提醒读者使用正确有效的代理IP。