实战反爬虫

python爬虫系列之Senium反爬虫

0.说在前面1.反爬虫方案2.实现2.1 导库2.2 selenium2.3 BS处理图片3.作者的话

0.说在前面

本周更新了机器学习,leetcode以及知识图谱,可视化的文章,还差爬虫,那么今天来实战一波!让各位爬虫伙伴久等了!

1.反爬虫方案

第一个难点:获取真实的html

selenium + chromdriver

通过url直接访问这个网站,获得的html并不是想要的,会发现里面提示:

浏览器正在安全检查中….

对于上述并未爬到想要的html解决方案是,发现该网站通过js来运行,倒计时后将字符串拼接请求,进入相应网站,如果能够模拟浏览器自动执行js,那么就实现了我们想要的效果了。

于是,这里采用selenium通过chromdriver调用chrome浏览器,模拟操作,自动运行js,(这里注意,倒计时5s,那么get url后,设置时间得大于5s,用time模块的sleep方法模拟即可)进而直接获得相应的html,随后进行正常的爬虫。

第二个难点:获得html后,并通BeautifulSoup获取到了6张图片的url,如何下载url对应的图片

requests.get + cookies + headers

这里下载采用requests.get方法来下载图片,但是直接这样操作会出现503错误(Service Unavailable),下载出来的图片也无法查看,那么就要解决这个问题。

解决办法:通过webdriver获得cookies,并对cookie进行下载与格式化为字典形式,传递给requests的get方法,除此之外,需要将User-Agent传递给requests的get方法,这里写入headers中进行传递。

第三个难点:如何将这些下载的图片进行呈现,并合并到一张图中集体展示

matplotlib.pyplot + matplotlib.image

先通过matplotlib.image的imread方法读取图片,再通过matplotlib.pyplot绘制一个figure,然后在绘制子图放入figure中即可。

2.实现

2.1 导库

2.2 selenium

2.3 BS处理图片

保存下载cookies操作

BeautifulSoup根据真实Html,获取图片Url

3.作者的话

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181028G008K200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券