querylist采集微信公众号文章(I.素材管理II.新建图文III.超链接IV.查找文章(图) )

优采云 发布时间: 2021-09-26 04:37

  querylist采集微信公众号文章(I.素材管理II.新建图文III.超链接IV.查找文章(图)

)

  使用官方帐户官方帐户获取所需信息。首先,它应该搜索其官方账户中的文章>或公共号码,并分析数据包中的信息。该过程中最重要的几点是:

  1.调用接口以查找文章@>

  转到主页->物料管理->新图形->超链接->查找文章@>

  一,。物资管理

  

  二,。新文本

  

  三,。超链接

  

  四,。查找文章@>

  

  2.获取所有相关的官方帐户信息

  输入关键字并单击搜索后,相应的数据包将显示在右侧。在这里更容易找到。选择XHR后,将只显示一个唯一的数据包

  

  一,。查看访问参数

  选择它,选择标题栏并滑动到底部以查看一系列请求参数。更重要的参数是令牌、查询(搜索关键字)、开始(起始值)和计数(每页显示的值)。您还可以在标题中看到数据的真实URL,然后向他发送请求

  

  二,。查看数据包内容

  官方帐户是官方帐户

  可以查看包中返回的所有内容(通常为JSON格式),并检查内容是否与页面上的内容相对应。在这里,我们可以在返回的数据列表中看到每个官方账户的信息,包括fakeid(访问官方账户后将使用文章@>)、公众号名称、公众号和总搜索量

  

  三,。过程分析

  通过模拟登录获得cookie后,我们访问主页以获取URL上的令牌ID,并通过向捕获的数据包上的真实URL发送请求和数据来获取相应的信息。在返回的信息中,我们通过解析总量来判断总量,更改“开始翻页”的值,最后将信息写入文件

  class Public(metaclass=SingletonType):

def __init__(self, search_key, token, cookie):

self.search_key = search_key

self.url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'

self.headers = {

'cookie': cookie,

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/74.0.3729.169 Safari/537.36'

}

self.data = {

'action': 'search_biz',

'token': token,

'lang': 'zh_CN',

'f': 'json',

'ajax': '1',

'random': '0.012103784566473319',

'query': self.search_key,

'count': '5'

}

def get_total(self):

self.data['begin'] = 0

content = requests.get(self.url, headers=self.headers, params=self.data).json()

total = content['total']

if total % 5:

return int(total / 5) + 1

else:

return int(total / 5)

def parse_public(self, num):

self.data['begin'] = num

content = requests.get(self.url, headers=self.headers, params=self.data).json()

return content

def get_data(self):

for num in range(0, self.get_total() + 1, 5):

for data in self.parse_public(num)['list']:

yield {

"name": data['nickname'],

"id": data['fakeid'],

'number': data['alias']

}

time.sleep(random.randint(1, 3))

def write_data(result, filename):

for data in result:

print(data)

with open(filename, 'a', encoding='utf-8') as f:

f.write(json.dumps(data, ensure_ascii=False) + '\n')

  3.抓斗文章@>

  在“官方帐号”下,选择相应的官方帐号并执行数据包捕获

  可以查看新数据包,包括下的所有文章@>列表

  I数据包捕获

  

  二,。查看请求参数

  显然,我们之前获得的伪造信息在这里使用。其他一切都和以前一样。查询也是一个搜索关键字。指定查询后,将返回相关的搜索词。如果未指定,则默认为空,并返回默认值

  

  三,。查看数据内容

  

  四,。过程分析

  模拟登陆后获取cookie和token,fakeid可以自行获取,查阅上一部分获取官方账户信息的内容,然后将请求发送到数据包的真实URL,通过app解析返回的数据。msg_ucnt获取总量、更改开始值、翻页、获取文章@>标题、创建时间(时间戳需要转换为时间格式)、文章@>简要说明、文章@>链接等信息,最后执行写入文件操作

  class Articls(metaclass=SingletonType):

def __init__(self, token, fakeid, cookie, search_key=""):

self.search_key = search_key

self.url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'

self.headers = {

'cookie': cookie,

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/74.0.3729.169 Safari/537.36',

'host': 'mp.weixin.qq.com',

'Connection': 'keep-alive',

'Accept': 'application/json, text/javascript, */*; q=0.01'

}

self.data = {

"token": token,

"lang": "zh_CN",

"f": "json",

"ajax": "1",

"action": "list_ex",

"count": "5",

"query": self.search_key,

"fakeid": fakeid,

"type": "9",

}

def parse_articles(self, num):

self.data['begin'] = num

content = requests.get(self.url, headers=self.headers, params=self.data).json()

return content

def get_total(self):

self.data['begin'] = 0

content = requests.get(self.url, headers=self.headers, params=self.data).json()

total = content['app_msg_cnt']

if total % 5:

return int(total / 5) + 1

else:

return int(total / 5)

@staticmethod

def convert_2_time(stamp):

return time.strftime("%Y-%m-%d", time.localtime(stamp))

def get_data(self):

if self.get_total():

for num in range(0, self.get_total() + 1, 5):

for data in self.parse_articles(num)['app_msg_list']:

yield {

"title": data['title'],

"create_time": self.convert_2_time(data['create_time']),

# 摘要

'digest': data['digest'],

'link': data['link']

}

time.sleep(random.randint(1, 3))

else:

print("No search item")

exit()

def write_data(result, filename):

for data in result:

print(data)

with open(filename, 'a', encoding='utf-8') as f:

f.write(json.dumps(data, ensure_ascii=False) + '\n')

  4.模拟登录

  我们都知道具体的操作流程。现在我们缺少两样东西,饼干和代币。我们仔细观察主页。代币随处可见。HTML代码和URL随处可见。我们可以简单地从URL获取cookies。我们可以通过selenium登录后获取cookies

  一,。Cookie获取

  

  

  通过selenium调用Chrome浏览器以输入用户名和密码。登录后单击“睡眠”一段时间以扫描用户的代码。登录成功后,再次访问主页并获取要写入文件的cookie(是否写入文件取决于您的个人偏好,您可以返回)

  def login(username, passwd):

cookies = {}

driver = webdriver.Chrome() # 谷歌驱动

driver.get('https://mp.weixin.qq.com/')

# 用户名

driver.find_element_by_xpath('//input[@name="account"]').clear()

driver.find_element_by_xpath('//input[@name="account"]').send_keys(username)

driver.find_element_by_xpath('//input[@name="password"]').clear()

driver.find_element_by_xpath('//input[@name="password"]').send_keys(passwd)

# 登录

driver.find_element_by_xpath('//a[@class="btn_login"]').click()

time.sleep(20)

# 获取cookie

driver.get('https://mp.weixin.qq.com/')

time.sleep(5)

cookie_items = driver.get_cookies()

for cookie_item in cookie_items:

cookies[cookie_item['name']] = cookie_item['value']

with open('cookie.txt', 'w') as f:

f.write(json.dumps(cookies))

driver.close()

  

  二,。代币获取

  读取文件解析cookie,启动主页请求,并在获得令牌后将其与cookie一起返回

  def get_cookie_token():

url = 'https://mp.weixin.qq.com'

header = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/74.0.3729.169 Safari/537.36',

'host': 'mp.weixin.qq.com',

}

with open('cookie.txt', 'r', encoding='utf-8') as f:

cookie = f.read()

cookies = json.loads(cookie)

response = requests.get(url=url, cookies=cookies)

token = re.findall(r'token=(\d+)', str(response.url))[0]

result = []

for k, v in cookies.items():

result.append(k + '=' + v)

return "; ".join(result), token

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线