Python中硒爬取微信公众号文章的方法

  介绍

这篇文章主要介绍Python中硒爬取微信公众号文章的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

需求:

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

思路:

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

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

实现

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

 Python中硒爬取微信公众号文章的方法

2,启动webdriver,并添加相应的饼干。

浏览器=webdriver.Chrome ()
  等待=WebDriverWait(浏览器,10)
  #随便访问一个地址,然后才能设置的饼干
  browser.get (& # 39; https://httpbin.org/get& # 39;)
  #添加饼干,df为保存的excel饼干
  因为我在范围(len (df)):
  cookie_dict={
  “domain": df.loc[我& # 39;域# 39;],
  & # 39;名字# 39;:df.loc[& # 39;我的名字# 39;],
  & # 39;价值# 39;:str (df.loc[我& # 39;价值# 39;]),
  “expires": df.loc(我,“到期/Max-Age"),
  & # 39;path & # 39;: & # 39;/& # 39;}
  browser.add_cookie (cookie_dict)
  browser.get (weixin_url) 

3,控制浏览器下移动

观察page_source,可以发现,文章到最底部的判断是。

& lt; div类=發oadmore with_line"id=癹s_nomore"比;   & lt; div类=皌ips_wrp"祝辞   & lt;跨类=疤崾緅s_no_more_msg"在已无更多& lt;/span>   & lt;跨类=疤崾緅s_need_add_contact"在关注公众帐号,接收更多消息& lt;/span>   & lt;/div>   & lt;/div>

使用司机控制JS。

% %   #通过判断已无更多的风格,来判断是否到最底部,最终执行到最底部   no_more_msg_style=& # 39;显示:没有;& # 39;   而真正的:   wait.until (EC.presence_of_element_located ((By.XPATH & # 39;//跨度(@class=疤崾緅s_no_more_msg"和文本()=耙盐薷唷癩& # 39;)))   no_more=browser.find_element_by_xpath(& # 39;//跨度(@class=癹s_no_more_msg"技巧;和文本()=耙盐薷唷癩& # 39;)   now_style=no_more.get_attribute(& # 39;风格# 39;)   如果str (now_style); (no_more_msg_style)==1:   #说明已经加载完了   打破   其他:   #停顿一会,等待浏览器加载   time . sleep (5)   #通过JS,执行到最底部   browser.execute_script (& # 39; window.scrollTo (0, document.body.scrollHeight) & # 39;)

4,关键信息获取。

根据html,分析得出文章url处在& lt; div是否=?000000026“祝辞中。

& lt; div类=皐eui_msg_card js_card"是否=?000000026“比;   & lt; div类=皐eui_msg_card_hd"在2017年1月13日& lt;/div>   & lt; div类=皐eui_msg_card_bd"祝辞   & lt; !——图文——比;   & lt; !——普通图文——比;   & lt; div id=癢XAPPMSG1000000026"类=皐eui_media_box appmsg js_appmsg"href=癶ttp://mp.weixin.qq.com/s& # 63; __biz=MzI5MDQ4NzU5MA==,=2247483748,中期idx=1, sn=e804e638484794181a27c094f81be8e1& chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&现?38 # wechat_redirect",data-t=?”的在   & lt;跨类=皐eui_media_hd js_media"data-s=?40”;href=癶ttp://mp.weixin.qq.com/s& # 63; __biz=MzI5MDQ4NzU5MA==,=2247483748,中期idx=1, sn=e804e638484794181a27c094f81be8e1& chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&现?38 # wechat_redirect"数据类型=癆PPMSG"比;   & lt;/span>   & lt; div类=皐eui_media_bd js_media"数据类型=癆PPMSG"比;   & lt; h5类=皐eui_media_title"href=癶ttp://mp.weixin.qq.com/s& # 63; __biz=MzI5MDQ4NzU5MA==,=2247483748,中期idx=1, sn=e804e638484794181a27c094f81be8e1& chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&现?38 # wechat_redirect"比;   承认自己是难民有什么错   & lt;/h5>   类& lt; p=皐eui_media_desc"祝辞枷锁已经足够沉重,谢绝道德绑架& lt;/p>   类& lt; p=皐eui_media_extra_info"在2017年1月13日& lt;/p>   & lt;/div>   & lt;/div>   & lt;/div>   & lt;/div>

文章类型主要分为,

& lt; div类=皐eui_media_bd js_media"数据类型=癆PPMSG"祝辞
& lt; div类=皐eui_media_bd js_media"数据类型=癟EXT"祝辞

有无原创进行划分。

最终实现:

% %   结果=[]   errlist=[]   #先得到其中一个   el_divs=browser.find_elements_by_xpath (& # 39;//div [@class=皐eui_msg_card_list"]/div [@class=皐eui_msg_card js_card"] & # 39;)   我=0   在div el_divs:   日期=标题=url=yuanchuang=& # 39; & # 39;   试一试:   日期=div.find_element_by_xpath (& # 39;。//div [@class=皐eui_msg_card_hd"] & # 39;) .get_attribute (& # 39; innerhtml # 39;)   el_content=div.find_element_by_xpath (& # 39;。//div [@class=皐eui_media_bd js_media"] & # 39;)   如果el_content.get_attribute(& # 39;数据类型# 39;)==& # 39;APPMSG& # 39;:   el=el_content.find_element_by_xpath (& # 39;。/h5 (@class=皐eui_media_title") & # 39;)   title=el.text   url=el.get_attribute (& # 39; hrefs& # 39;)   xb=el_content.find_element_by_xpath (& # 39;/p [@class=皐eui_media_extra_info"] & # 39;)。text   yuanchuang=& # 39;原创& # 39;如果xb.find(& # 39;原创& # 39;)!其他=1 & # 39;& # 39;   elif el_content.get_attribute(& # 39;数据类型# 39;)==& # 39;文本# 39;:   title=& # 39;随文& # 39;   url=el_content.find_element_by_xpath (& # 39;。/div # 39;)。text   yuanchuang=& # 39;原创& # 39;   null   null   null   null   null   null   null   null

Python中硒爬取微信公众号文章的方法