微信公众号文章爬取之技术剖析【总结更新中】2019.05.16
优采云 发布时间: 2020-08-12 07:43技术路线剖析
Step 0:创建公众号命名的文件夹
Step 1:GET恳求到搜狗陌陌引擎,以微信公众号中文名称作为查询关键字
Step 2:从搜索结果页中解析出公众号主页链接
Step 3:Selenium+PhantomJs获取js异步加载渲染后的html
Step 4:检测目标网站是否进行了封锁
Step 5:使用PyQuery,从Step 3获取的html中解析出公众号文章列表的数据
Step 6:把陌陌文章数据封装成字典的list
Step 7:把Step 5的字典list转换为Json
Step 8:写文件
Bug修正
由于文章写于2017年4月,距今两年多,python运行环境发生变化较大,故借助作者提供的公众号【DataBureau】进行调试程序。以下为调试中出现的问题及解决方式:
问 题 1:Selenium+PhantomJs获取js异步加载渲染后的html
异常提醒:WebDriverException: Message: 'phantomjs.exe' executable needs to be in PATH.
问题剖析: 已根据文章中设置‘'phantomjs.exe’路径,依旧报错。后搜索到用Python做爬虫的诸位,不要再用PhantomJS了,文中提及 新版本的Selenium不再支持PhantomJS了,请使用Chrome或Firefox的无头版本来代替,于是推测是不是Selenium更新后遗留的问题。
解决方式:既然PhantomJS已于2018年3月4日官宣不再对其进行更新,因此也就弃用此种形式进行动态爬虫。参照PhantomJS在Selenium中被标记为过时的应对举措一文,转用Selenium+Headless Chrome技术
如何使用Headless Chrome
Headless模式是Chrome 59中的新特点,要使用Chrome须要安装chromedriver。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("https://cnblogs.com/")
其他用法与PhantomJS基本相同。
更多资料请查看官方文档。
参考资料:4.微信公众号文章批量采集导出---小V公众号文章下载器
微信公众号文章批量采集导出---小V公众号文章下载器.png