今天浏览网易新闻的时候,发现评论比新闻还精彩,不得不佩服网友们的脑洞,怪不得互联网上有云:天下黄段出网易。正好小开最近在鼓捣Python,就准备练练手了。任务是爬取网易的热门新网并且截取热门跟帖保存到电脑本地硬盘。
用Python爬取网页呢,最简单入门的方式是利用bs4,然而只能处理HTML文本,如果要截取渲染后的网页,就无能为力了,由于小开才接触Python,就只能在网上找方法了,结果被我找到了,下面就是要用到的几个利器:
from selenium import webdriver
from PIL import Image
selenium用来自动化控制浏览器,通过浏览器渲染后的网页再经过其自带的方法截取网页,最后通过pillow来编辑所获得的网页截图,从而实现只对热门跟帖板块实现截取,是不是很简单啊!!
首先安装pillow,selenium安装方式类同,可以自己摸索
用pip方式安装
其次安装浏览器,是的,没有看错要安装浏览器,但不同于常规的浏览器,这里安装的是无界面的webkit浏览器phantomjs。安装方法就是官网下载了,但是由于众所周知的原因只能在mirror下载,自己摸索吧,后面就是安装的大坑了。
解压下载好的文件后可以找到phantomjs.exe文件,但是这个真不是用来安装的,而是用来添加到可执行路径的,由于开始没有使用正确老是报错:
'phantomjs.exe' executable needs to be in PATH. (selenium PhantomJS python)
没有办法只有看phantomjs官方文档了,但是我发现我是不是看了假的文档,怎么一点都不像Python风格呢??先不管了,百度找了好久终于发现问题所在,下面直接贴出正确的引用方式:
browser = webdriver.PhantomJS(executable_path=r'E:\WorkPlace\PycharmProjects\phantomjs\bin\phantomjs.exe')
只提一点,不要漏了 r ……解决了这个问题,下面就水到渠成了。打开网站
browser.get('http://comment.news.163.com/news2_bbs/D2JOE6LC0001899N.html')
截图
browser.get_screenshot_as_file('G:\\Pythonshotpicture\\pinglun.png')
找到热门跟帖的id
element = browser.find_element_by_id('hotReplies')
最后一步裁剪保存
print(element.location)print(element.size)left = element.location['x']top = element.location['y']right = element.location['x'] element.size['width']bottom = element.location['y'] element.size['height']im = Image.open('G:\\Pythonshotpicture\\pinglun.png')im = im.crop((left, top, right, bottom))im.save('G:\\Pythonshotpicture\\pinglun.png')
小试牛刀,附上截取的图片
热门跟帖
好了,小开我要去焊板子了,毕竟我只是一个硬件工程师……