如何详细编写Python Selenium爬取微信公众号文章的代码?

2026-05-16 18:592阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计958个文字,预计阅读时间需要4分钟。

如何详细编写Python Selenium爬取微信公众号文章的代码?

参考资料:selenium+webdriver添加cookie:https://www.jb51.net/article/193102.需求:想阅读微信公众号历史文章,但每次找回看的地方不方便。思路:1、使用selenium打开微信公众号历史文章页面;

参照资料:selenium webdriver添加cookie: www.jb51.net/article/193102.html

需求:

想阅读微信公众号历史文章,但是每次找回看得地方不方便。

思路:

1、使用selenium打开微信公众号历史文章,并滚动刷新到最底部,获取到所有历史文章urls。

2、对urls进行遍历访问,并进行下载到本地。

实现

1、打开微信客户端,点击某个微信公众号->进入公众号->打开历史文章链接(使用浏览器打开),并通过开发者工具获取到cookies,保存为excel。

2、启动webdriver,并添加相应cookies。

browser = webdriver.Chrome() wait = WebDriverWait(browser,10) # 随便访问一个地址,然后才能设置cookies browser.get('mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect" data-t="0"> <span class="weui_media_hd js_media" style="background-image:url(mmbiz.qpic.cn/mmbiz_jpg/XibhQ5tjv6dG9B4GF1C9MGBJO5AR2wvjCL9LgdcFgAdEgyU8wZFuDXoH9O9dNvafwK3RibCjUyiarIlUDlkxbcyfQ/640?wx_fmt=jpeg)" data-s="640" hrefs="mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect" data-type="APPMSG"> </span> <div class="weui_media_bd js_media" data-type="APPMSG"> <h4 class="weui_media_title" hrefs="mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect"> 承认自己是难民有什么错 </h4> <p class="weui_media_desc">枷锁已经足够沉重,谢绝道德绑架</p> <p class="weui_media_extra_info">2017年1月13日</p> </div> </div> </div> </div>

文章类型主要分为,

<div class="weui_media_bd js_media" data-type="APPMSG">
<div class="weui_media_bd js_media" data-type="TEXT">

有无原创进行划分。

最终实现:

%%time result = [] errlist = [] # 先得到其中一个 el_divs = browser.find_elements_by_xpath('//div[@class="weui_msg_card_list"]/div[@class="weui_msg_card js_card"]') i = 0 for div in el_divs: date = title = url = yuanchuang = '' try: date = div.find_element_by_xpath('.//div[@class="weui_msg_card_hd"]').get_attribute('innerHTML') el_content = div.find_element_by_xpath('.//div[@class="weui_media_bd js_media"]') if el_content.get_attribute('data-type') == 'APPMSG': el = el_content.find_element_by_xpath('./h4[@class="weui_media_title"]') title = el.text url = el.get_attribute('hrefs') xb = el_content.find_element_by_xpath('./p[@class="weui_media_extra_info"]').text yuanchuang = '原创' if xb.find('原创') != -1 else '' elif el_content.get_attribute('data-type') == 'TEXT': title = '随文' url = el_content.find_element_by_xpath('./div').text yuanchuang = '原创' else: # 其他未能识别的类型 errlist.append([i,div.get_attribute('innerHTML')]) except NoSuchElementException: errlist.append([i,div.get_attribute('innerHTML')]) print(str(i),':',date,title,url,yuanchuang) result.append([date,title,yuanchuang,url]) i = i + 1

5、将得到url保存到excel

dfout = pd.DataFrame(result, columns=['日期', '标题', '原创', '地址'])
with pd.ExcelWriter(savename) as writer:
dfout.to_excel(writer,index=False,sheet_name = 'Sheet1')

最终保存形式

6、在遍历最后的链接地址,逐个requets保存,即可得到。组建成菜单形式的文章,可参考

记一次 excel vba 参考手册爬虫实战,不必要的一次爬虫。:httwww.jb51.net/article/193107.htm

遇到的坑:

1、find_element_by_xpath 需要配上 NoSuchElementException 使用,否则遇到未找到的节点就会出错,最初find_elements_by_xpath 来防止找不到相关节点,结果发现,执行速度异常的慢,需要查找原因。

2、cookies使用的时候是人为获取,如果太长时间不用,需要重新获取。可以考虑结合pyautogui来控制weixin客户端来进行获取。?

如何详细编写Python Selenium爬取微信公众号文章的代码?

3、构建的时候,最后分布试行,最初的文章类型没有做好判断,结果执行时间很久。做好异常捕获,再逐步分析错误的节点问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计958个文字,预计阅读时间需要4分钟。

如何详细编写Python Selenium爬取微信公众号文章的代码?

参考资料:selenium+webdriver添加cookie:https://www.jb51.net/article/193102.需求:想阅读微信公众号历史文章,但每次找回看的地方不方便。思路:1、使用selenium打开微信公众号历史文章页面;

参照资料:selenium webdriver添加cookie: www.jb51.net/article/193102.html

需求:

想阅读微信公众号历史文章,但是每次找回看得地方不方便。

思路:

1、使用selenium打开微信公众号历史文章,并滚动刷新到最底部,获取到所有历史文章urls。

2、对urls进行遍历访问,并进行下载到本地。

实现

1、打开微信客户端,点击某个微信公众号->进入公众号->打开历史文章链接(使用浏览器打开),并通过开发者工具获取到cookies,保存为excel。

2、启动webdriver,并添加相应cookies。

browser = webdriver.Chrome() wait = WebDriverWait(browser,10) # 随便访问一个地址,然后才能设置cookies browser.get('mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect" data-t="0"> <span class="weui_media_hd js_media" style="background-image:url(mmbiz.qpic.cn/mmbiz_jpg/XibhQ5tjv6dG9B4GF1C9MGBJO5AR2wvjCL9LgdcFgAdEgyU8wZFuDXoH9O9dNvafwK3RibCjUyiarIlUDlkxbcyfQ/640?wx_fmt=jpeg)" data-s="640" hrefs="mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect" data-type="APPMSG"> </span> <div class="weui_media_bd js_media" data-type="APPMSG"> <h4 class="weui_media_title" hrefs="mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect"> 承认自己是难民有什么错 </h4> <p class="weui_media_desc">枷锁已经足够沉重,谢绝道德绑架</p> <p class="weui_media_extra_info">2017年1月13日</p> </div> </div> </div> </div>

文章类型主要分为,

<div class="weui_media_bd js_media" data-type="APPMSG">
<div class="weui_media_bd js_media" data-type="TEXT">

有无原创进行划分。

最终实现:

%%time result = [] errlist = [] # 先得到其中一个 el_divs = browser.find_elements_by_xpath('//div[@class="weui_msg_card_list"]/div[@class="weui_msg_card js_card"]') i = 0 for div in el_divs: date = title = url = yuanchuang = '' try: date = div.find_element_by_xpath('.//div[@class="weui_msg_card_hd"]').get_attribute('innerHTML') el_content = div.find_element_by_xpath('.//div[@class="weui_media_bd js_media"]') if el_content.get_attribute('data-type') == 'APPMSG': el = el_content.find_element_by_xpath('./h4[@class="weui_media_title"]') title = el.text url = el.get_attribute('hrefs') xb = el_content.find_element_by_xpath('./p[@class="weui_media_extra_info"]').text yuanchuang = '原创' if xb.find('原创') != -1 else '' elif el_content.get_attribute('data-type') == 'TEXT': title = '随文' url = el_content.find_element_by_xpath('./div').text yuanchuang = '原创' else: # 其他未能识别的类型 errlist.append([i,div.get_attribute('innerHTML')]) except NoSuchElementException: errlist.append([i,div.get_attribute('innerHTML')]) print(str(i),':',date,title,url,yuanchuang) result.append([date,title,yuanchuang,url]) i = i + 1

5、将得到url保存到excel

dfout = pd.DataFrame(result, columns=['日期', '标题', '原创', '地址'])
with pd.ExcelWriter(savename) as writer:
dfout.to_excel(writer,index=False,sheet_name = 'Sheet1')

最终保存形式

6、在遍历最后的链接地址,逐个requets保存,即可得到。组建成菜单形式的文章,可参考

记一次 excel vba 参考手册爬虫实战,不必要的一次爬虫。:httwww.jb51.net/article/193107.htm

遇到的坑:

1、find_element_by_xpath 需要配上 NoSuchElementException 使用,否则遇到未找到的节点就会出错,最初find_elements_by_xpath 来防止找不到相关节点,结果发现,执行速度异常的慢,需要查找原因。

2、cookies使用的时候是人为获取,如果太长时间不用,需要重新获取。可以考虑结合pyautogui来控制weixin客户端来进行获取。?

如何详细编写Python Selenium爬取微信公众号文章的代码?

3、构建的时候,最后分布试行,最初的文章类型没有做好判断,结果执行时间很久。做好异常捕获,再逐步分析错误的节点问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。