鱼C论坛

 找回密码
 立即注册
查看: 1564|回复: 5

[已解决]爬虫 爬取网页 加载网页时间长

[复制链接]
发表于 2020-5-26 22:09:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学习完小甲鱼爬虫课程后,自己尝试写爬虫代码,会遇到这样的问题: urlopen 某些网站, 程序跑起来,不报错也不结束,一只等待程序在跑。网络高峰时很难跑出结果。

我仅仅是要爬取网页“审查元素” 里的代码信息,不需要网页完全加载完相关图片、动画等。

有没有这样的方案,可以不等待网页完全加载完? 仅仅是爬取源代码信息。
最佳答案
2020-5-28 08:10:41
发起urlopen的时候就是只拿到html,js,css等的txt,并不会像浏览器一样解析、加载、渲染。
当然,网速慢也可能导致html都拿不到,可以设置timeout参数:urlopen(url, timeout=5)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 07:14:02 From FishC Mobile | 显示全部楼层
无头浏览器吗
我们提交的是get或post请求,和网页加载有毛关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 23:20:01 | 显示全部楼层
没办法吧,审查元素就是返回的网页数据汇总吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 23:56:44 | 显示全部楼层
我们用代码请求的下来的,全部属于源代码信息,即请求下来的,就是右键,查看源码里面所有的字节。

比如请求一个图片的地址,返回的全部是二进制码信息。

你如果嫌弃速度慢,可以使用异步,或者线程的方式,等待有结果了在去处理,而不是等着出结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 08:10:41 | 显示全部楼层    本楼为最佳答案   
发起urlopen的时候就是只拿到html,js,css等的txt,并不会像浏览器一样解析、加载、渲染。
当然,网速慢也可能导致html都拿不到,可以设置timeout参数:urlopen(url, timeout=5)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 09:38:22 | 显示全部楼层
自己回答自己,经过几天摸索和百度,大致说下理解:  原来我一套代码写下来,没有考虑超时,以及异常的情况,其实很多时候不是代码问题,而是链接网络问题,程序在跑,不报错也不停止的“”假死“情况”。
这种情况,应该在代码里加上 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-12 14:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表