目标:爬取央视新闻2020年一月份的所有新闻数据
需求:首先除了基本pycharm配置之外,你还需要一步手机或者一模拟器(这里使用雷电模拟器),以及用于抓包的工具(我使用的是fiddle)
打开你安装好的央视新闻APP和我的fiddle(记得配置好fiddle和雷电)
选择要爬取的时间链,我选择了1月1日的
往fiddle找找找,找到了新闻的的标题和新闻的url位置:
央视新闻往下拉,刷新新闻,继续得到所要请求的网址,再更改时间链,找找找,找网址
我们会发现以上两个会改变的地方,可以猜到p就是页(肯定),putData就是发布时间(可能是,先做猜测),复制一份到百度时间戳转换下就验证了猜测
所以我们要对它们进行构建,你们可以尝试去构建时间戳,这里就不演示了因为仔细一裘你会发现这分明就是个等差数列。
仔细瞅瞅代码:
import requests
from time import sleep
url = 'http://api.cportal.cctv.com/api/rest/articleInfo/getScrollList'
headers = {
你的headers
}
def get_params(pg, pub_date):
return {
'n': '20',
'version': '1',
'p': pg,
'pubDate': pub_date,
}
page = 0
time_stamp = 1577875564000
count = 0 # 用来计算天数,如果超过31天就是2月份了,我没有去分析跨月份的规律是不是也是这样
while True:
page += 1
response = requests.get(url, params=get_params(page, time_stamp), headers=headers)
result = response.json()['itemList']
# print(result)
if result:
for data in result:
news_url = data['detailUrl']
news_title = data['itemTitle']
print(news_title + '\t' + news_url)
if len(result) == 0:
page = 0
time_stamp += 86464000
count += 1
sleep(2)
if count > 31:
break
如有疑问,请在下方留言