电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python selenium爬取微信公眾號文章代碼詳解

瀏覽:59日期:2022-07-14 11:48:06

參照資料:selenium webdriver添加cookie: https://www.jb51.net/article/193102.html

需求:

想閱讀微信公眾號歷史文章,但是每次找回看得地方不方便。

思路:

1、使用selenium打開微信公眾號歷史文章,并滾動刷新到最底部,獲取到所有歷史文章urls。

2、對urls進行遍歷訪問,并進行下載到本地。

實現

1、打開微信客戶端,點擊某個微信公眾號->進入公眾號->打開歷史文章鏈接(使用瀏覽器打開),并通過開發者工具獲取到cookies,保存為excel。

Python selenium爬取微信公眾號文章代碼詳解

2、啟動webdriver,并添加相應cookies。

browser = webdriver.Chrome()wait = WebDriverWait(browser,10)# 隨便訪問一個地址,然后才能設置cookiesbrowser.get(’https://httpbin.org/get’)# 添加cookies,df為保存的excel cookiesfor i in range(len(df)): cookie_dict = { 'domain': df.loc[i,’DomaiN’], ’name’: df.loc[i,’Name’], ’value’: str(df.loc[i,’Value’]), 'expires': df.loc[i,'Expires/Max-Age'], ’path’: ’/’,} browser.add_cookie(cookie_dict)browser.get(weixin_url)

3、控制瀏覽器下移動

觀察page_source,可以發現,文章到最底部的判斷是。

<div id='js_nomore'> <div class='tips_wrp'> <span style='display: none;'>已無更多</span> <span style='display: none;'>關注公眾帳號,接收更多消息</span> </div> </div>

使用driver控制JS。

%%time# 通過判斷已無更多的style,來判斷是否到最底部,最終執行到最底部no_more_msg_style = ’display: none;’while True: wait.until(EC.presence_of_element_located((By.XPATH,’//span[@ and text()='已無更多']’))) no_more= browser.find_element_by_xpath(’//span[@ and text()='已無更多']’) now_style = no_more.get_attribute(’style’) if str(now_style).find(no_more_msg_style) == -1: # 說明已經加載完了 break else: # 停頓一會,等待瀏覽器加載 time.sleep(5) # 通過JS,執行到最底部 browser.execute_script(’window.scrollTo(0,document.body.scrollHeight)’)

4、關鍵信息獲取。

根據html,分析得出文章url處在<div msgid='1000000026'>中。

<div msgid='1000000026'> <div class='weui_msg_card_hd'>2017年1月13日</div> <div class='weui_msg_card_bd'> <!-- 圖文 --> <!-- 普通圖文 --> <div hrefs='http://mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect' data-t='0'> <span data-s='640' hrefs='http://mp.weixin.qq.com/s?__biz=MzI5MDQ4NzU5MA==&mid=2247483748&idx=1&sn=e804e638484794181a27c094f81be8e1&chksm=ec1e6d2ddb69e43bd3e1f554c2d0cedb37f099252f122cee1ac5052b589b56f428b2c304de8e&scene=38#wechat_redirect' data-type='APPMSG'> </span> <div data-type='APPMSG'><h4 hrefs='http://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 data-type='APPMSG'><div data-type='TEXT'>

有無原創進行劃分。

最終實現:

%%timeresult = []errlist = []# 先得到其中一個el_divs = browser.find_elements_by_xpath(’//div[@class='weui_msg_card_list']/div[@class='weui_msg_card js_card']’)i = 0for 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’)

最終保存形式

Python selenium爬取微信公眾號文章代碼詳解

6、在遍歷最后的鏈接地址,逐個requets保存,即可得到。組建成菜單形式的文章,可參考

記一次 excel vba 參考手冊爬蟲實戰,不必要的一次爬蟲。:htthttps://www.jb51.net/article/193107.htm

遇到的坑:

1、find_element_by_xpath 需要配上 NoSuchElementException 使用,否則遇到未找到的節點就會出錯,最初find_elements_by_xpath 來防止找不到相關節點,結果發現,執行速度異常的慢,需要查找原因。

2、cookies使用的時候是人為獲取,如果太長時間不用,需要重新獲取。可以考慮結合pyautogui來控制weixin客戶端來進行獲取。?

3、構建的時候,最后分布試行,最初的文章類型沒有做好判斷,結果執行時間很久。做好異常捕獲,再逐步分析錯誤的節點問題。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: 微信 Python
相關文章:
主站蜘蛛池模板: 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 北京公寓出租网-北京酒店式公寓出租平台 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 浙江寺庙设计-杭州寺院设计-宁波寺庙规划_汉匠 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 长城人品牌官网| 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 广西教师资格网-广西教师资格证考试网 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 一点车讯-汽车网站,每天一点最新车讯! | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 中细软知识产权_专业知识产权解决方案提供商 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 次氯酸钠厂家,涉水级次氯酸钠,三氯化铁生产厂家-淄博吉灿化工 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 智慧消防-消防物联网系统云平台 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 |