分享好友 站长动态首页 网站导航

python如何爬取搜狗微信公众号文章永久链接的思路解析

网友发布 2023-09-12 10:21 · 头闻号竞价资讯

这篇文章主要介绍了python如何爬取搜狗微信公众号文章永久链接的思路解析 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。

本文主要讲解思路,代码部分请自行解决

搜狗微信搜素获取公众号及文章

通过微信公众平台获取永久链接

python+scrapy框架

mysql数据库存储+读取公众号

获取搜狗微信上当天的信息排名指定输入关键字,通过scrapy抓取公众号

通过登陆微信公众号链接,获取cookie信息由于模拟登陆微信公众平台还未解决,因此需要手动登陆,实时获取cookie信息

在这里可以实现转变永久链接

代码部分def parse(self, response):

item = SougouItem()

item["title"] = response.xpath('//title/text()').extract_first()

print("**"*5, item["title"],"**"*5)

name = input("----------请输入需要搜索的信息:")

print(name)

url = "http://weixin.sogou.com/weixin?query="+name+"&type=2&page=1&ie=utf8"

yield scrapy.Request(url=url, callback=self.parse_two, meta={"name":name})搜狗微信中会出现访问频率过快,导致需要输入验证码

def parse_two(self, response):

print(response.url)

name = response.meta["name"]

resp = response.xpath('//ul[@]/li')

s = 1

# 判断url 是否是需要输入验证码

res = re.search("from", response.url) # 需要验证码验证

if res:

print(response.url)

img = response.xpath('//img/@src').extract()

print(img)

url_img = "http://weixin.sogou.com/antispider/"+ img[1]

print(url_img)

url_img = requests.get(url_img).content with open("urli.jpg", "wb") as f:

f.write(url_img) # f.close()

img = input("请输入验证码:")

print(img)

url = response.url

r = re.search(r"from=(.*)",url).group(1)

print(r)

postData = {"c":img,"r":r,"v":"5"}

url = "http://weixin.sogou.com/antispider/thank.php"

yield scrapy.FormRequest(url=url, formdata=postData, callback=self.parse_two,meta={"name":name})

# 不需要验证码验证

else:

for res, i in zip(resp, range(1, 10)):

item = SougouItem()

item["url"] = res.xpath('.//p[1]/a/@href').extract_first()

item["name"] = name

print("第%d条" % i) # 转化永久链接

headers = {"Host": "mp.weixin.qq.com",

"Connection": "keep-alive",

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

"X-Requested-With": "XMLHttpRequest",

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

"Referer": "https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&token=938949250&lang=zh_CN",

"Accept-Encoding": "gzip, deflate, br",

"Accept-Language": "zh-CN,zh;q=0.9",

"cookie": "noticeLoginFlag=1; pgv_pvi=5269297152; pt2gguin=o1349184918; RK=ph4smy/QWu; ptcz=f3eb6ede5db921d0ada7f1713e6d1ca516d200fec57d602e677245490fcb7f1e; pgv_pvid=1033302674; o_cookie=1349184918; pac_uid=1_1349184918; ua_id=4nooSvHNkTOjpIpgAAAAAFX9OSNcLApfsluzwfClLW8=; mm_lang=zh_CN; noticeLoginFlag=1; remember_acct=Liangkai318; rewardsn=; wxtokenkey=777; pgv_si=s1944231936; uuid=700c40c965347f0925a8e8fdcc1e003e; ticket=023fc8861356b01527983c2c4765ef80903bf3d7; ticket_id=gh_6923d82780e4; cert=L_cE4aRdaZeDnzao3xEbMkcP3Kwuejoi; data_bizuin=3075391054; bizuin=3208078327; data_ticket=XrzOnrV9Odc80hJLtk8vFjTLI1vd7kfKJ9u+DzvaeeHxZkMXbv9kcWk/Pmqx/9g7; slave_sid=SWRKNmFyZ1NkM002Rk9NR0RRVGY5VFdMd1lXSkExWGtPcWJaREkzQ1BESEcyQkNLVlQ3YnB4OFNoNmtRZzdFdGpnVGlHak9LMjJ5eXBNVEgxZDlZb1BZMnlfN1hKdnJsV0NKallsQW91Zjk5Y3prVjlQRDNGYUdGUWNFNEd6eTRYT1FSOEQxT0MwR01Ja0Vo; slave_user=gh_6923d82780e4; xid=7b2245140217dbb3c5c0a552d46b9664; openid2ticket_oTr5Ot_B4nrDSj14zUxlXg8yrzws=D/B6//xK73BoO+mKE2EAjdcgIXNPw/b5PEDTDWM6t+4="}

respon = requests.get(url=item["url"]).content

gongzhongh = etree.HTML(respon).xpath('//a[@id="post-user"]/text()')[0]

# times = etree.HTML(respon).xpath('//*[@id="post-date"]/text()')[0]

title_one = etree.HTML(respon).xpath('//*[@id="activity-name"]/text()')[0].split()[0]

print(gongzhongh, title_one)

item["tit"] = title_one

item["gongzhongh"] = gongzhongh

# item["times"] = times

url = "https://mp.weixin.qq.com/cgi-bin/searchbiz?action=search_biz&token=938949250&lang=zh_CN&f=json&ajax=1&query=" + gongzhongh + "&begin=0&count=5"

# wenzhang_url = "https://mp.weixin.qq.com/cgi-bin/appmsg?token=610084158&lang=zh_CN&f=json&ajax=1&random=0.7159556076774083&action=list_ex&begin=0&count=5&query=" + item["tit"] + "&fakeid=MzA5MzMxMDk3OQ%3D%3D&type=9"

resp = requests.get(url=url, headers=headers).content

print(resp)

faskeids = json.loads(resp.decode("utf-8"))

try:

list_fask = faskeids["list"] except Exception as f:

print("**********[INFO]:请求失败,登陆失败, 请重新登陆*************")

return

for fask in list_fask:

fakeid = fask["fakeid"]

nickname = fask["nickname"] if nickname == item["gongzhongh"]:

url = "https://mp.weixin.qq.com/cgi-bin/appmsg?token=938949250&f=json&action=list_ex&count=5&query=&fakeid=" + fakeid + "&type=9"

# url = "https://mp.weixin.qq.com/cgi-bin/appmsg?token=1773340085&lang=zh_CN&f=json&ajax=1&action=list_ex&begin=0&count=5&query=" + item["tit"] + "&fakeid=MzA5MzMxMDk3OQ%3D%3D&type=9"

url = "https://mp.weixin.qq.com/cgi-bin/appmsg?token=938949250&f=json&ajax=1&action=list_ex&begin=0&count=5&query=" + item["tit"] +"&fakeid=" + fakeid +"&type=9"

resp = requests.get(url=url, headers=headers).content

app = json.loads(resp.decode("utf-8"))["app_msg_list"]

item["aid"] = app["aid"]

item["appmsgid"] = app["appmsgid"]

item["cover"] = app["cover"]

item["digest"] = app["digest"]

item["url_link"] = app["link"]

item["tit"] = app["title"]

print(item)

time.sleep(10) # time.sleep(5)

# dict_wengzhang = json.loads(resp.decode("utf-8"))

# app_msg_list = dict_wengzhang["app_msg_list"]

# print(len(app_msg_list))

# for app in app_msg_list:

# print(app)

# title = app["title"]

# if title == item["tit"]:

# item["url_link"] = app["link"]

# updata_time = app["update_time"]

# item["times"] = time.strftime("%Y-%m-%d %H:%M:%S", updata_time)

# print("最终链接为:", item["url_link"])

# yield item

# else:

# print(app["title"], item["tit"])

# print("与所选文章不同放弃")

# # item["tit"] = app["title"]

# # item["url_link"] = app["link"]

# # yield item

# else:

# print(nickname, item["gongzhongh"])

# print("与所选公众号不一致放弃")

# time.sleep(100)

# yield item

if response.xpath('//a[@]'):

s += 1

url = "http://weixin.sogou.com/weixin?query="+name+"&type=2&page="+str(s) # time.sleep(3)

yield scrapy.Request(url=url, callback=self.parse_two, meta={"name": name})

免费推广对于一些企业来说还是十分有必要的,因为,在创业初期会涉及到资金的总是,所以,不得不选择性价比较高的方式,当然免费推广的方式也有很多,比如以下:

免费推广方式一:群发

群发这种推广有来以久,有人的地方就会有市,而有人的地方,并且集中的地方,就是有社交的地方,像QQ群发,邮件群发这些都是比较常用的,一款软件就能做;除了这些以外,还有一个比较垂直的社交应用,可以通过私信群发,进行推广。

优势:可以在短时间内触发很多用户

劣势:会造成封号,账号成本会高

解决方案:如果想用这种方式进行推广,你可以进行精细化运营,比如你是做母婴产品的,你可以在多平台进行人设搭建,树立自己的形象,从而把自己做成这个行业的KOL,这是目前这种免费推广的一个方向。

免费推广方式二:自媒体和短视频

自媒体和短视频现在是最火的一种免费推广方式,借助平台的推荐算法,进行相应的内容生产,通过优质的内容触发到需求用户。这种推广的常规作法是搬运,随着算法更新,搬运并不十分的有效了。

优势:用户的精准比较高

劣势:会遇到内容枯竭

解决方案:前期搬运,后期升级内容。

免费推广方式三:搜索优化

搜索优化是最为传统的免费推广方式,其中的技术含量也是比较高,如果,你有自己的网站的话,可以进行网站优化,使你的行业关键词在搜索引擎展现。如果你没有网站也是可以的,只是做法不一样。没有网站,你可以将你的推广内容,发送至各大网站,进行关键词排名。

优势:一旦有排名,就会长期稳定

劣势:成效时间长,需要有一定的技术

解决方案:可以先从外部优化做起,通过各大论坛网站,软文平台,尽量多地进行内容发布,先让自己的行业信息在搜索引擎里面有展现,然后,再慢慢学习SEO知识。

写在后面:

免费推广的方式还有很多,目前主流并且有效果的无非这几种,像霸屏,这些方法,也是通过SEO进行演变过来的;微博微信与自媒体属于同类。

创业不易,祝成功。

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

评论

0

收藏

点赞