基于搜狗平台的微信文章爬虫
目标需求
目前有这样一个需求,给出一个或一串关键字,然后爬取微信里面与之相关的文章,接着将其下载到本地,并且存成html文件。(从结果来看,html里面图片基本上显示不出来,部分样式显示不出来,但是需要的文章内容是能保存下来的。)
设计思路
根据数据来源可以有两种设计思路,一种是通过微信公众号平台爬虫,一种是根据搜狗平台来爬虫。但实质基本上是一样的,都是模拟用户操作,跳转到相关页面,通过Selenium和BeautifulSoup框架把有用的信息保存下来,接着下一页,继续爬取数据。(完整代码贴在最后)
微信公众号平台
使用这种方法需要自己先申请一个公众号,登陆进去,然后管理 --> 素材管理 --> 新建分享图文,再输入关键字搜索,如下图所示。这样数据就查出来了,再通过Selenium和BeautifulSoup框架找到相应元素,存储有用信息即可。但是调用网络请求太麻烦。
搜狗微信平台
搜狗微信网址:https://weixin.sogou.com/
在这个网页,输入关键字,如图所示:
得到这个页面之后,我们再解析页面,获取到我们需要的文章,然后一直下一页,一直重复,直到把我们要的文章爬完即可。
开发工具
-
首先需要安装Python,因为是基于Python开发的
-
Python的编辑器,我这里用的是PyCharm
-
需要chromedriver。因为在爬虫过程中,Python程序需要通过driver打开浏览器,我这里用的是谷歌浏览器,所以是chromedriver。如果用的是火狐浏览器,那么下载安装对应的driver即可。一般像这种driver都有下载安装的教程。
核心框架
Selenium框架
这个是Python里自动测试中常用的框架,主要就是模拟用户操作浏览器,可以查找页面元素并进行操作。(这是我个人的理解,还有更多的功能可在网上查找)
首先需要引入相关框架
from selenium import webdriver
然后打开相应的网页
driver = webdriver.Chrome()
driver.get("https://weixin.sogou.com/")
接着可以查找输入框,写入关键字,然后点击搜索,就可以看到一条条我们需要的数据
# 输入框
driver.find_element_by_xpath('//*[@id="query"]').send_keys(key_word)
# 搜索按钮
driver.find_element_by_xpath('//*[@id="searchForm"]/div/input[3]').click()
这里稍微解释下,find_element...这是查找元素的方法。但是查找元素不止这一种,还可以通过class