如何通过微信公众号后台的“超链接”功能进行爬取

优采云 发布时间: 2021-04-28 03:13

  如何通过微信公众号后台的“超链接”功能进行爬取

  PS:如果您需要Python学习资料,可以单击下面的链接自行获取

  免费的Python学习资料和小组交流答案,点击加入

  有多种爬网方式。今天,我将与您分享一个更简单的方法,即通过微信官方帐户后端的“超链接”功能进行爬网。也许有些朋友没有联系微信官方账号的后台,这是一张图片供大家理解

  

  这里的一些朋友可能会说,我无法在后台登录正式帐户,该怎么办? ? ?

  没关系,尽管每个抓取工具的目的都是为了获得我们想要的结果,但这并不是我们学习的重点。我们学习的重点是爬网过程,这是我们获取目标数据的方式,因此我们无法登录到公众手中。阅读此内容文章后,后台的朋友可能无法获得最终的爬网结果,但阅读此文章后,您也会有所收获。

  一、初步准备

  选择要爬网的目标官方帐户

  单击超链接-进入编辑超链接界面-进入我们需要抓取的搜索目标官方帐户

  今天我们以抓取“数据分析”官方帐户为例,供大家介绍

  

  单击官方帐户以查看每个文章对应的标题信息

  

  这一次我们的抓取工具的目标是获得文章标题和相应的链接。

  二、开始抓取

  爬行动物的三个步骤:

  1、请求页面

  首先导入我们需要使用此采集器的第三方库

  import re#用来解析网页

import requests#用来请求网页

import csv#用来保存数据

import time#用来设置每次爬取间隔的时间

  找到我们抓取的目标数据的位置,单击通过搜索获得的包,然后获取目标URL和请求标头信息

  

  请求网页

  headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',

'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; skey=@YLtvDuKyj; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65*敏*感*词*054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309e*敏*感*词*713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'

}#请求头信息,这里cookie信息必须添加,否则得不到网页信息

url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin=0&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'

response=requests.get(url,headers=headers)#得到响应内容

response.encoding='utf-8'#设置响应内容为utf-8格式

html=response.text#得到网页的文本形式

print(html)

  此处的请求标头信息必须添加cookie信息,否则无法获取网页信息

  网页的请求结果如下图所示。红色框标记了我们需要的文章标题和文章链接

  

  2、分析网页

  从网页响应结果中我们可以看到,每篇文章文章的标题和链接都位于“ title”标签和“ cover”标签的后面,因此我们可以使用正则表达式直接对其进行解析

  title=re.findall('"title":"(.*?)"',html)#得到文章标题

cover=re.findall('"cover":"(.*?)"',html)#得到文章链接

all=zip(title,cover)#利用zip方法,将两个列表中的数据一一对应

print(list(all))#list是对zip方法得到的数据进行解压

  解析后的结果如下

  

  3、保存数据

  for data in all:#for循环遍历列表

time.sleep(3)#每爬取一篇文章间隔3秒,以防触发反爬

with open('C:\\Users\\Administrator\\Desktop\\爬取公众号文章.csv','a',encoding='utf-8-sig') as file:

#将数据保存到桌面

write=csv.writer(file)

write.writerow(data)

  到目前为止,该抓取工具已经完成,让我们看一下最终结果

  

  完整代码

  import re#用来解析网页

import requests#用来请求网页

import csv#用来保存数据

import time#用来设置每次爬取间隔的时间

# 请求网页

index=0

headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',

'cookie': 'pgv_pvi=2389011456; RK=x4Sdy3WsT4; ptcz=4a2fe0ffda6742a230c94f168291afcce2bd001e5d6615132b55da90559cd463; pgv_pvid=6989331736; _ga=GA1.2.735850052.1585832762; ptui_loginuin=1207020736; ua_id=iJuK7hnHjcUE0e2dAAAAAHzCRcatCWOiHc-hdkhSDL4=; __guid=166713058.1972731636944397800.1590316882436.5461; openid2ticket_oY8wqwesgvgkdQ69wUeM5UxhOV5c=ION52/k2w4M3o44iht5BRt5yCyxP/3IaRXJ84RIpRZA=; mm_lang=zh_CN; pac_uid=0_5ecd1592971c3; uin=o1240069166; skey=@YLtvDuKyj; pgv_info=ssid=s4875389884; pgv_si=s8410697728; uuid=62839906b2a77b5f098cd91979af8b33; rand_info=CAESIC53TQFCwjIe4ZsrTRKvSs+ocfs4UTsj9swrrNwosjCd; slave_bizuin=3240807523; data_bizuin=3240807523; bizuin=3240807523; data_ticket=AiTk/OFWXCKxhaenCvEuP06mwWTI6YqCyt+74hoaXaNtKBbcnq//ZTXHzqByMhK6; slave_sid=YndxeFhCSkU5OUJtdFYycW9zN29FcG51NU5GNElBM3I2RF9wVjJBRGx2bWxrTXdiMDZFYzllUWNaMlN4N0RsOTlVMDRxZFZEMjJXdlRZcXBVOGptQ2ZDSVZiOEJlQW5BZDVCWlkzSnJ6WWNPWVRiN1J0cldCd0pvbTc3RGRiMm9pZ3ZISTl6WWhDUmNCZ2s3; slave_user=gh_5d822fe7fd08; xid=9794daa60db66fcf7a65*敏*感*词*054e3d68ce; mmad_session=43d4e5247a6b025b67ba3abd48d27a309e*敏*感*词*713911b6ef6f23cddb4b9953e771354ad1572fbc3fa895051725e95abb887cf2d03e9864084974db75c8588189699ea5b20b8fe35073831446ef98d24de600f107fe69d79646a3dd2907ab712e1f11de1c56c245721266e7088080fefde3; ts_last=mp.weixin.qq.com/cgi-bin/frame; ts_uid=1963034896; monitor_count=15'

}#请求头信息,这里cookie信息必须添加,否则得不到网页信息

for i in range(2):#设置for循环实现翻页,爬取多页内容,这里range括号内的参数可以更改

url='https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin='+str(index)+'&count=5&fakeid=MjM5MjAxMDM4MA==&type=9&query=&token=59293242&lang=zh_CN&f=json&ajax=1'

response=requests.get(url,headers=headers)#得到响应内容

response.encoding='utf-8'#设置响应内容为utf-8格式

html=response.text#得到网页的文本形式

# 解析网页

title=re.findall('"title":"(.*?)"',html)#得到文章标题

cover=re.findall('"cover":"(.*?)"',html)#得到文章链接

all=zip(title,cover)#利用zip方法,将两个列表中的数据一一对应

# print(list(all))#list是对zip方法得到的数据进行解压

# 保存数据

for data in all:#for循环遍历列表

time.sleep(3)#每爬取一篇文章间隔3秒,以防出发反爬

with open('C:\\Users\\Administrator\\Desktop\\爬取公众号文章.csv','a',encoding='utf-8-sig') as file:

#将数据保存到桌面

write=csv.writer(file)

write.writerow(data)

pass

pass

index += 5

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线