Python爬取⽂章、点赞数代码还是热乎的,只要你细⼼⼀步步的慢慢调试,绝壁没问题
前期准备
1. ;
2. Python;
3. Fiddler;
4. 账号;
流程
1. 使⽤⽤⽣成cookie
2. 使⽤Fiddler抓取数据, 获取阅读数
3. 通过cookie请求获取⽂章,再使⽤Fiddler抓取的数据获取阅读数
4. 整理数据写⼊到数据库
效果
1. 平均20s可爬取⼀篇⽂章。为了号、的安全 时间间隔长⼀点
2. 可按⽇期爬取⽂章。
3. 视频⽂章⽆法爬取。当然了代码优化优化应该也是可以的
4. 会出现 搜索⽂章限制问题。换⼀个解决
操作
操作
1. 获取Cookie
1.1、基于Python调⽤, 打开URL
1.2、输⼊账号、密码
1.3、⼿动扫码
1.4、⽣成 ⽂件, 包含cookie信息
2. Fiddler抓取客户端请求数据, 获取阅读量
需要获取req_id 、 pass_ticket 、 appmsg_tojen、cookie 和user-agent
2、1 电脑登录(PC版)
2、2 关注需要爬取的
2、3 设置Fiddler 并保存配置
客户端请求⽂章, fiddler抓取到的数据req_id 、 pass_ticket 、 appmsg_tojen
客户端请求⽂章, fiddler抓取到的数据cookie 和user-agent
END前⾯的获取⼯作就结束了…
⼀、获取cookie
# -*- coding: utf-8 -*-
import time
import json
from selenium import webdriver
import sys
sys.path.append('/path/to/your/module')
post = {}
driver = webdriver.Chrome(executable_path="") ('mp.weixin.qq')
time.sleep(2)
driver.find_element_by_name('account').clear()
driver.find_element_by_name('account').send_keys('账号') driver.find_element_by_name('password').clear()
driver.find_element_by_name('password').send_keys('密码')
random python# ⾃动输⼊密码后点击记住密码
time.sleep(5)
driver.find_element_by_xpath("./*//a[@class='btn_login']").click()
# 扫码
time.sleep(20)
<('mp.weixin.qq')
cookie_items = _cookies()
for cookie_item in cookie_items:
post[cookie_item['name']] = cookie_item['value']
cookie_str = json.dumps(post)
with open('', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie write ok ...')
⼆、获取⽂章数据(⽂章列表写⼊数据库)
# -*- coding: utf-8 -*-
import time, datetime
import json
import requests
import re
import random
import MySQLdb
#设置要爬取的列表
gzlist=['ckxxwx']
# 打开数据库连接
# 打开数据库连接
db = t("localhost", "root", "123456", "wechat_reptile_data", charset='utf8' )
# 数据的开始⽇期 - 结束⽇期
start_data = '20190630';
end_data = '20190430'
# 使⽤cursor()⽅法获取操作游标
cursor = db.cursor()
# 获取阅读数和点赞数
def getMoreInfo(link, query):
pass_ticket = "VllmJYTSgRotAAiQn17Tw1v35AduDOg%252BLCq%252B07qi4FKcStfL%252Fkc44G0LuIvr99HO"
if query == 'ckxxwx':
appmsg_token = "1016_%2F%2Bs3kaOp2TJJQ4EKMVfI0O8RhzRxMs3lLy54hhisceyyXmLHXf_x5xZPaT_pbAJgmwxL19F0XRMWtvYH"
phoneCookie = "rewardsn=; wxuin=811344139; devicetype=Windows10; version=62060833; lang=zh_CN; pass_ticket=VllmJYTSgRotAAiQn17Tw1v3 5AduDOg+LCq+07qi4FKcStfL/kc44G0LuIvr99HO; wap_sid2=CIvC8IIDElxlWlVuYlBacDF0TW9sUW16WmNIaDl0cVhxYzZnSHljWlB3TmxfdjlDWmItNVpXeU RScG1RNEpuNzFUZFNSZWVZcjE5SHZST2tLZnBSdDUxLWhHRDNQX2dEQUFBfjCasIvpBTgNQAE=; wxtokenkey=777"
mid = link.split("&")[1].split("=")[1]
idx = link.split("&")[2].split("=")[1]
sn = link.split("&")[3].split("=")[1]
_biz = link.split("&")[0].split("_biz=")[1]
# ⽬标url
url = "mp.weixin.qq/mp/getappmsgext"
# 添加Cookie避免登陆操作,这⾥的"User-Agent"最好为⼿机浏览器的标识
headers = {
"Cookie": phoneCookie,
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenge r/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.1021.400 QQBrowser/9.0.2524.400"
}
# 添加data,`req_id`、`pass_ticket`分别对应⽂章的信息,从fiddler复制即可。
data = {
"is_only_read": "1",
"is_temp_url": "0",
"appmsg_type": "9",
'reward_uin_count': '0'
}
params = {
"__biz": _biz,
"mid": mid,
"sn": sn,
"idx": idx,
"key": '777',
"pass_ticket": pass_ticket,
"appmsg_token": appmsg_token,
"uin": '777',
"wxtoken": "777"
}
# 使⽤post⽅法进⾏提交
content = requests.post(url, headers=headers, data=data, params=params).json()
# 提取其中的阅读数和点赞数
if 'appmsgstat' in content:
readNum = content["appmsgstat"]["read_num"]
likeNum = content["appmsgstat"]["like_num"]
else:
print('请求参数过期!')
# 歇10s,防⽌被封
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论