爬虫 爬取网页 加载网页时间长
学习完小甲鱼爬虫课程后,自己尝试写爬虫代码,会遇到这样的问题: urlopen 某些网站, 程序跑起来,不报错也不结束,一只等待程序在跑。网络高峰时很难跑出结果。我仅仅是要爬取网页“审查元素” 里的代码信息,不需要网页完全加载完相关图片、动画等。
有没有这样的方案,可以不等待网页完全加载完? 仅仅是爬取源代码信息。 无头浏览器吗
我们提交的是get或post请求,和网页加载有毛关系 没办法吧,审查元素就是返回的网页数据汇总吧? 我们用代码请求的下来的,全部属于源代码信息,即请求下来的,就是右键,查看源码里面所有的字节。
比如请求一个图片的地址,返回的全部是二进制码信息。
你如果嫌弃速度慢,可以使用异步,或者线程的方式,等待有结果了在去处理,而不是等着出结果。 发起urlopen的时候就是只拿到html,js,css等的txt,并不会像浏览器一样解析、加载、渲染。
当然,网速慢也可能导致html都拿不到,可以设置timeout参数:urlopen(url, timeout=5)。 自己回答自己,经过几天摸索和百度,大致说下理解:原来我一套代码写下来,没有考虑超时,以及异常的情况,其实很多时候不是代码问题,而是链接网络问题,程序在跑,不报错也不停止的“”假死“情况”。
这种情况,应该在代码里加上 timeout , while 循环 和try 语句,实现“如果超时没反应,while 重试多次”, 把尝试次数提上去之后,明显整个程序跑起来就顺了。
比如,代码节选:
a=1
while a<21:
try:
response = urllib.request.urlopen(req,timeout=12)
html = response.read().decode("utf-8")
except:
print("第%d次 链接XX页面失败,重新连接。。。"% a)
a = a +1
continue
else:
print("链接XX页面成功!")
break
页:
[1]