python爬取ul下的li是空的_「原创」「python自学笔记」python爬虫之腾讯动漫

本篇是python自学的第一个里程碑,如python自学第一篇的计划,完成一个简单的爬虫。

爬虫说是简单,但是用一门正在学习的语言实现起来还是废了点劲。

本人比较喜欢漫画所以第一个目标就是爬点漫画来看看,第一个目标就选择了一个漫画站。从周二开始,到今天周四,花了快8个小时攒出了一个能动的爬虫,爬取一个连接的漫画。下面就来说说这里的心路历程。

先给大家看看选中的漫画目标,随机选的,不喜勿喷

46277b3b996b61faac55d0e055a73c81.png

爬取这个页面的时候,还是非常轻松的,主要使用了requests和beautifulSoup,轻轻松松就抓取到了标题和开始阅读的正文url。

title=bs.find('h2',class_='works-intro-title')... relative_url=bs.find('a',class_='works-intro-view')['href']

但是进入正文的url后,就傻眼了,怎么也获取不到图片的

标签,这是怎么回事呢,于是打印出beautifulSoup的内容看了一下才知道,原来漫画的主体部分都是js动态加载的,抓出来的都是代码而不是真正的html标签。

于是开始了搜索解决方案,最后选择了selenium+chromedriver的方式来加载整个页面。

selenium直接使用pip安装,chromedriver请在下面地址下载

http://npm.taobao.org/mirrors/chromedriver/

请按照你的chrome浏览器的版本进行下载,下载的chromedriver解压到python.exe所在的文件夹。(这个应该是可以配置路径的,但我是一个初学者,请原谅我的愚笨,我还没有学到这个)。

这个时候再读取

就已经可以读取到了
ul=bs.find('ul',class_='comic-contain')lis=ul.findAll('li')For li in lis: img_src=li.img['src']

但是下载了两个图片后,突然就报错了,再次debug整个beautifulsoup才发现,图片都是懒加载的,为了响应速度,前台也是想尽了办法。

这时,我的第一个想法是把查找下一个图片的js方法找到,但是打开浏览器的network一看,每一个图片是直接请求的,而不是通过统一的接口请求的

e4f226b4678090721540ed53be05a303.png

而且在所有加载的js资源中搜索了一圈也没有查到图片的相关操作(有点笨),所以就采用了暴力的方法,使用selenium+js模拟向下滚动

For step in range(50,100000,50): js="varq=document.getElementById('mainView').scrollTop="+str(step) driver.execute_script(js)

终于,所有图片在暴力下拉下,全部加载了,之后的下载也简单多了。

详细代码请见:

https://gitee.com/dean2083/python-learning

day3

坚持总会有收获。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值