python网络爬虫开发:header处理及网络超时

2022-08-0711:04:52云计算与物联网Comments1,293 views字数 1641阅读模式

发送的网络请求可能会被服务器拒绝这可能是该网站设置了反爬虫机制来防止用户恶意采集信息,但这不代表我们不能访问该网站,我们可以模拟服务器的头部信息去访问。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

1. 请求headers处理文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

我们首先打开我们要访问的网站,然后根据浏览器的打开方式进入检查页面,例如谷歌浏览器可以直接按F12或者Ctrl+Shift+I,进入下要页面:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

python网络爬虫开发:header处理及网络超时文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

找到document文件并单击,如下图页面:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

python网络爬虫开发:header处理及网络超时文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

这个就为我们的头部信息,也就是我们当前访问此网站的用户信息,我们复制一下然后开始使用它,代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

1
2
3
4
5
6
import requests
url = 'https://www.baidu.com/'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}#头部信息
= requests.get(url,headers = headers)#发送网络请求
print(r.text)#以文本形式输出网页源码

输出为网站的html源码,如下图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

python网络爬虫开发:header处理及网络超时文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

这种方式类似于我们模拟了一个用户去访问该网站,等同于手动在打开浏览器去访问。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

2. 网络超时文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

我们在发送网络请求的时候避免不了超时现象的发生,如果我们不设置一个超时时间,那么系统会因为它长时间未响应而无法打开网页。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

超时又分为连接超时和读取超时。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

连接超时就是在程序默认的等待时间内没有得到服务器的响应。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

我们来看个例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

1
2
3
4
5
6
7
8
9
10
11
import datetime
import requests
url = 'http://www.google.com.hk'
print(datetime.datetime.now())
try:
    = requests.get(url, timeout = 5).text
    print('获得响应')
except requests.exceptions.RequestException as s:
    print('连接超时')
    print(s)
print(datetime.datetime.now())

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

1
2
3
4
5
6
2020-02-19 21:09:06.084353
连接超时
HTTPConnectionPool(host='www.google.com.hk', port=80): Max retries exceeded with url: /
(Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0383A298>, 
'Connection to www.google.com.hk timed out. (connect timeout=5)'))
2020-02-19 21:09:11.125962

由于国内的服务器无法正常访问谷歌,所以出现连接超时的现象,其中关键语句为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

1
= requests.get(url, timeout = 5).text

我们在这条语句中设置超时限定时间。
我们再来看一下读取超时,读取超时就是指客户端等待服务器发送请求的时间,也就是指连接成功之后服务器返回响应之间等待的时间,为了防止服务器响应速度过慢而导致等待时间过长,我们可以设置读取时间,超过了规定时间即为读取超时,它的用法和连接超时类似,关键语句为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

1
= requests.get(url, timeout=(5,10)).text

在这里15即为读取限制时间,如果超过即为读取超时。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

    3. 总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

本节的内容能够帮助我们高效的进行爬虫操作,模拟浏览器头部信息的访问方式在爬虫中会经常用到,各个浏览器对应的方式可能不同,大家可以通过自己的浏览器去找到相应的信息去解读。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26701.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunda/26701.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定