最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年08月12日 10:00:20   作者:forxtz  
這篇文章主要介紹了Python selenium爬取微信公眾號(hào)歷史文章代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

需求:

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

思路:

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

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

實(shí)現(xiàn)

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

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

browser = webdriver.Chrome()
wait = WebDriverWait(browser,10)
# 隨便訪問(wèn)一個(gè)地址,然后才能設(shè)置cookies
browser.get('https://httpbin.org/get')
# 添加cookies,df為保存的excel cookies
for 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 class="loadmore with_line" style="display: none;" id="js_nomore">
    <div class="tips_wrp">
      <span class="tips js_no_more_msg" style="display: none;">已無(wú)更多</span>
      <span class="tips js_need_add_contact" style="display: none;">關(guān)注公眾帳號(hào),接收更多消息</span>
    </div>
  </div>

使用driver控制JS。

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

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

根據(jù)html,分析得出文章url處在<div msgid="1000000026">中。

<div class="weui_msg_card js_card" msgid="1000000026">
      <div class="weui_msg_card_hd">2017年1月13日</div>
      <div class="weui_msg_card_bd">
         <!-- 圖文 -->
             <!-- 普通圖文 -->
            <div id="WXAPPMSG1000000026" class="weui_media_box appmsg js_appmsg" 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 class="weui_media_hd js_media" style="background-image:url(http://mmbiz.qpic.cn/mmbiz_jpg/XibhQ5tjv6dG9B4GF1C9MGBJO5AR2wvjCL9LgdcFgAdEgyU8wZFuDXoH9O9dNvafwK3RibCjUyiarIlUDlkxbcyfQ/640?wx_fmt=jpeg)" 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 class="weui_media_bd js_media" data-type="APPMSG">
                <h4 class="weui_media_title" 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 class="weui_media_bd js_media" data-type="APPMSG">
<div class="weui_media_bd js_media" data-type="TEXT">

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

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

%%time
result = []
errlist = []
# 先得到其中一個(gè)
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 = '原創(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')

最終保存形式

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

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

遇到的坑:

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

2、cookies使用的時(shí)候是人為獲取,如果太長(zhǎng)時(shí)間不用,需要重新獲取??梢钥紤]結(jié)合pyautogui來(lái)控制weixin客戶端來(lái)進(jìn)行獲取。?

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • django和vue互傳圖片并進(jìn)行處理和展示

    django和vue互傳圖片并進(jìn)行處理和展示

    在項(xiàng)目中圖片上傳并附帶幾個(gè)參數(shù)的場(chǎng)景非常常見(jiàn),如果技術(shù)棧是Vue+Django的小伙伴就一定會(huì)遇到這個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于django和vue互傳圖片并進(jìn)行處理和展示的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • keras實(shí)現(xiàn)VGG16 CIFAR10數(shù)據(jù)集方式

    keras實(shí)現(xiàn)VGG16 CIFAR10數(shù)據(jù)集方式

    這篇文章主要介紹了keras實(shí)現(xiàn)VGG16 CIFAR10數(shù)據(jù)集方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 常見(jiàn)python正則用法的簡(jiǎn)單實(shí)例

    常見(jiàn)python正則用法的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇常見(jiàn)python正則用法的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • python排序方法實(shí)例分析

    python排序方法實(shí)例分析

    這篇文章主要介紹了python排序方法,實(shí)例分析了Python實(shí)現(xiàn)默認(rèn)排序、降序排序及按照key值排序的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-04-04
  • aws 通過(guò)boto3 python腳本打pach的實(shí)現(xiàn)方法

    aws 通過(guò)boto3 python腳本打pach的實(shí)現(xiàn)方法

    這篇文章主要介紹了aws 通過(guò)boto3 python腳本打pach的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能

    Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能

    這篇文章主要介紹了Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能,需本文通過(guò)截圖實(shí)例代碼的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-12-12
  • TensorFlow人工智能學(xué)習(xí)張量及高階操作示例詳解

    TensorFlow人工智能學(xué)習(xí)張量及高階操作示例詳解

    這篇文章主要為大家介紹了TensorFlow人工智能學(xué)習(xí)張量及高階操作的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python列表中刪除多條字典信息的三種方法

    python列表中刪除多條字典信息的三種方法

    本文主要介紹了python列表中刪除多條字典信息的三種方法,主要包括列表推導(dǎo)式,filter()函數(shù),del?關(guān)鍵字這三種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • pycharm內(nèi)無(wú)法import已安裝的模塊問(wèn)題解決

    pycharm內(nèi)無(wú)法import已安裝的模塊問(wèn)題解決

    今天小編就為大家分享一篇pycharm內(nèi)無(wú)法import已安裝的模塊問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 使用Flask和Django中解決跨域請(qǐng)求問(wèn)題

    使用Flask和Django中解決跨域請(qǐng)求問(wèn)題

    這篇文章主要介紹了使用Flask和Django中解決跨域請(qǐng)求問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04

最新評(píng)論

石林| 乌海市| 赤水市| 台前县| 安陆市| 徐汇区| 聊城市| 郴州市| 确山县| 泸州市| 平阳县| 石家庄市| 万州区| 玉龙| 蕲春县| 长泰县| 大庆市| 阜南县| 肥城市| 阜南县| 尚义县| 桃园县| 九龙县| 肥城市| 高雄市| 阳西县| 锡林浩特市| 阳西县| 昌都县| 和静县| 吉首市| 洛宁县| 临安市| 太仓市| 杭州市| 绥阳县| 汤阴县| 宁德市| 朝阳区| 山阳县| 湖北省|