zoukankan      html  css  js  c++  java
  • 爬虫 爬取微信公众号

    本文在网上找到有三种爬取方法

    1.使用订阅号功能里的查询链接 , (此链接现在反扒措施严重,爬取几十页会封订阅号,仅供参考,)

    详情请访问此链接:https://cuiqingcai.com/4652.html

    2.使用搜狗搜索的微信搜索(此方法只能查看每个微信公众号的前10条文章)

    详情请访问此链接:https://blog.csdn.net/qiqiyingse/article/details/70050113

    3.先抓取公众号的接口,访问接口获取全部文章连接(详细讲解此方法,如下:)

      1> 使用抓包工具Charles抓取公众号接口:

        下载Charles请访问:https://www.charlesproxy.com/download/

        使用方法 百度 一大堆

        废话少说,进入正题:

        首先登陆微信(电脑,手机端都可以,Charles也可以抓取手机端的接口,不过需要设置,推荐登陆电脑客户端微信)点击订阅号,点进去需要爬取的微信公众号。

    点击右上角,有一个历史文章查看,准备好点击此处

        运行装好的charles。 然后点击查看历史文章的按钮,此时charles出现一个

     ,                                                 

    此接口就是此公众号的接口,复制此接口,在浏览器中打开此网址如图:

     如果提示请在微信中打开此链接,有两个原因:

      001 。需设置headers为微信浏览器的headers

      002 。 链接有效时间为半个小时,超过半小时 链接里的key值过期,重新获取一下链接即可

    谷歌浏览器设置headers:

      按F12打开开发者选项 , 点击此处

      

      点击

      

     点击

    点击

    再次冲输入微信浏览器的headers

    微信headers : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.884.400 QQBrowser/9.0.2524.400

    .到此,可以进行第二部 selenuim+chromdriver,因为使用的是js加载,

    2 。selenuim+chromdriver , 打开上文找到的接口,模拟浏览器翻页,一直翻页到最下边,获取整个文章的链接,并保存。

    不多赘述,直接上代码!

     1 from selenium import webdriver
     2 import time , requests
     3 from lxml import etree
     4 from pyquery import PyQuery as pq
     5 import re
     6 
     7 
     8 
     9 url = "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5MTUyNTE3Mg==&scene=124&#wechat_redirect"
    10 
    11 # Chromedriver
    12 opt = webdriver.ChromeOptions()
    13 # prefs = {'profile.default_content_setting_values': {'images': 2}}
    14 # opt.add_experimental_option('prefs', prefs)#这两行是关闭图片加载
    15 opt.add_argument('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.884.400 QQBrowser/9.0.2524.400')#设置headers
    16 # # opt.add_argument('--headless')#此行打开无界面
    17 driver = webdriver.Chrome(options=opt)
    18 
    19 driver.get(url)
    20 
    21 top = 1
    22 while 1:
    23     html = etree.HTML(driver.page_source)
    24     downss = html.xpath('//*[@id="js_nomore"]/div/span[1]/@style')
    25     if downss[0] == "display: none;":
    26         time.sleep(0.5)
    27         js = "var q=document.documentElement.scrollTop="+str(top*2000)
    28         driver.execute_script(js)#模拟下滑操作
    29         top += 1
    30         time.sleep(1)
    31     else:
    32         break
    33 html = etree.HTML(driver.page_source)
    34 bodyContent = html.xpath('//*[@id="js_history_list"]/div/div/div/div/h4/@hrefs')#获取文章的所有链接
    35 
    36 #保存本地
    37 fp = open("./aother.txt", "w+")
    38 for i in bodyContent:
    39     fp.write(str(i) + "
    ")
    40 driver.close()
    41 fp.close()

    接下来就可以挨个爬取文章链接,为所欲为了

    ,到此,欧了。

      

        

  • 相关阅读:
    Android NDK学习(1) 简介
    wmsys.wm_concat结果长度限制的问题
    onInterceptTouchEvent和onTouchEvent调用时序
    滑动到底部或顶部响应的ScrollView实现
    Android ViewPager使用详解
    android include标签的使用,在RelativeLayout中使用include标签需注意!!!!!
    Eclipse中如何在指定工程中搜索指定的字符串
    android:windowSoftInputMode属性详解
    cocos2d-x中关于touch事件的响应
    《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?
  • 原文地址:https://www.cnblogs.com/dahuag/p/9284677.html
Copyright © 2011-2022 走看看