APP爬虫之央视新闻

目标:爬取央视新闻2020年一月份的所有新闻数据

需求:首先除了基本pycharm配置之外,你还需要一步手机或者一模拟器(这里使用雷电模拟器),以及用于抓包的工具(我使用的是fiddle)

打开你安装好的央视新闻APP和我的fiddle(记得配置好fiddle和雷电)
APP爬虫之央视新闻_第1张图片
选择要爬取的时间链,我选择了1月1日的

往fiddle找找找,找到了新闻的的标题和新闻的url位置:
APP爬虫之央视新闻_第2张图片
APP爬虫之央视新闻_第3张图片
央视新闻往下拉,刷新新闻,继续得到所要请求的网址,再更改时间链,找找找,找网址
APP爬虫之央视新闻_第4张图片
我们会发现以上两个会改变的地方,可以猜到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

APP爬虫之央视新闻_第5张图片
如有疑问,请在下方留言

你可能感兴趣的:(APP爬虫之央视新闻)