亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Python selenium爬取微信公眾號(hào)文章代碼詳解

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

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

需求:

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

思路:

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

2、對urls進(jìn)行遍歷訪問,并進(jìn)行下載到本地。

實(shí)現(xiàn)

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

Python selenium爬取微信公眾號(hào)文章代碼詳解

2、啟動(dòng)webdriver,并添加相應(yīng)cookies。

browser = webdriver.Chrome()wait = WebDriverWait(browser,10)# 隨便訪問一個(gè)地址,然后才能設(shè)置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、控制瀏覽器下移動(dòng)

觀察page_source,可以發(fā)現(xiàn),文章到最底部的判斷是。

<div id='js_nomore'> <div class='tips_wrp'> <span style='display: none;'>已無更多</span> <span style='display: none;'>關(guān)注公眾帳號(hào),接收更多消息</span> </div> </div>

使用driver控制JS。

%%time# 通過判斷已無更多的style,來判斷是否到最底部,最終執(zhí)行到最底部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: # 說明已經(jīng)加載完了 break else: # 停頓一會(huì),等待瀏覽器加載 time.sleep(5) # 通過JS,執(zhí)行到最底部 browser.execute_script(’window.scrollTo(0,document.body.scrollHeight)’)

4、關(guān)鍵信息獲取。

根據(jù)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'> 承認(rèn)自己是難民有什么錯(cuò)</h4><p class='weui_media_desc'>枷鎖已經(jīng)足夠沉重,謝絕道德綁架</p><p class='weui_media_extra_info'>2017年1月13日</p> </div> </div> </div> </div>

文章類型主要分為,

<div data-type='APPMSG'><div data-type='TEXT'>

有無原創(chuàng)進(jìn)行劃分。

最終實(shí)現(xiàn):

%%timeresult = []errlist = []# 先得到其中一個(gè)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 = ’原創(chuàng)’ if xb.find(’原創(chuàng)’) != -1 else ’’ elif el_content.get_attribute(’data-type’) == ’TEXT’: title = ’隨文’ url = el_content.find_element_by_xpath(’./div’).text yuanchuang = ’原創(chuàng)’ else: # 其他未能識(shí)別的類型 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=[’日期’, ’標(biāo)題’, ’原創(chuàng)’, ’地址’]) with pd.ExcelWriter(savename) as writer:dfout.to_excel(writer,index=False,sheet_name = ’Sheet1’)

最終保存形式

Python selenium爬取微信公眾號(hào)文章代碼詳解

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

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

遇到的坑:

1、find_element_by_xpath 需要配上 NoSuchElementException 使用,否則遇到未找到的節(jié)點(diǎn)就會(huì)出錯(cuò),最初find_elements_by_xpath 來防止找不到相關(guān)節(jié)點(diǎn),結(jié)果發(fā)現(xiàn),執(zhí)行速度異常的慢,需要查找原因。

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

3、構(gòu)建的時(shí)候,最后分布試行,最初的文章類型沒有做好判斷,結(jié)果執(zhí)行時(shí)間很久。做好異常捕獲,再逐步分析錯(cuò)誤的節(jié)點(diǎn)問題。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: 微信 Python
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品国产精品国自产观看 | 小明看国产 | 在线日韩不卡 | 精品哟哟哟国产在线不卡 | 欧美日韩国产精品自在自线 | 国产精品嫩草研究院成人 | 国产逼 | 欧美一级毛片免费看高清 | 青草资源视频在线高清观看 | 免费观看黄色在线视频 | 美国免费三片在线观看 | 国产在线一区观看 | 免费播放观看视频大片 | 久久青草免费91观看 | 国产合集91合集久久日 | 亚洲 成人 欧美 自拍 | 美女拍拍拍无遮挡 | 国产乱视频在线观看播放 | 日韩成人免费视频播放 | 91中文字幕视频 | 乱色视频中文字幕 | 婷婷国产在线 | 国产精品成熟老女人 | 国产一区二区三区免费播放 | 在线播放一区二区精品产 | 亚洲国产成人久久99精品 | 尤物精品视频在线观看 | 亚洲综合图色40p | 欧美综合视频在线 | 亚洲精品视 | 一区二区三区欧美日韩 | www黄色网址 | 好爽快一点视频在线观看 | 午夜国产亚洲精品一区 | 日日摸夜夜搂人人要 | 国产在线精品福利一区二区三区 | 国产黄色自拍 | 亚洲在线视频免费观看 | 中文精品久久久久国产网址 | 在线观看www视频 | 国产一区二区三区不卡免费观看 |