6.获取环球时报关键词新闻--动态网页Ajax

本文介绍如何爬取环球时报的动态网页新闻,重点解析新闻链接和内容,通过检查网络请求获取Json数据,解析新闻标题和地址,最后保存文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

前段时间写了个爬虫获取新浪的新闻,但新浪新闻页面文档页格式不统一,新闻质量也较差,经过筛选,环球时报上面的新闻质量稍好,且页面格式比较统一。

二、实例解析

1.思路

  • 我们这里主要获取环球时报上面的国际新闻
  • 国际新闻URL:https://world.huanqiu.com/
  • 爬取新闻的三步法:解析主页上面的新闻链接---->解析每个新闻链接里面的内容---->格式化文本写入文档

2.新闻链接解析

  • 常规套路,打开主页,检查元素,找到一个新闻的元素位置

image.png

  • 容易发现上图中,“多米尼克”新闻的元素位置如下:

  • selector为"#recomend li a",但写入代码后,可以发现是找不到这个元素的,可以猜测是动态加载的网页
  • 同样的可以验证,打开主页源代码,我们搜索这条新闻是搜索不到的。

image.png

  • 点击检查元素的‘网络’选项卡,容易发现该网页动态加载的,在‘预览’中可以发现包含了当前页面的20条新闻数据,Json格式保存;

image.png

  • 接下来就是拼凑新闻链接

image.png

  • 这里主要关注下url中的offset为偏移量,通俗的讲就是页码,offset=0即为第1页,offset=20即为第2页,依次类推

接着解析每条新闻的地址,jsons数据中,aid即为该新闻的保存名,如aid为42BY7TXsqIc,那么该新闻的链接就是:https://world.huanqiu.com/article/42BY7TXsqIc;title为标题名,我们从json中获取这两条就够了

  • 下面是新闻链接解析模块的代码
#获取新闻链接
keyword='新冠'
count=int(input('请输入爬取页码数(1,2,3.....):'))
news_title=[]
news_url=[]
headers = {
   
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.81",
    "Cookie":'''UM_distinctid=177f21c29bf10d-043ddbd82b4eef-7a667166-144000-177f21c29c039b; _ma_tk=hewd6oh2rs0o2mqybcrd3s60un56m46w; REPORT_UID_=cJ869QdbSP132oZ6591juDJYZZ8wK0SC; Hm_lvt_1fc983b4c305d209e7e05d96e713939f=1614674668,1614738118,1614738291,1614908983; CNZZDATA1000010102=1231572127-1614671036-https%253A%252F%252Fwww.huanqiu.com%252F%7C1614914069; Hm_lpvt_1fc983b4c305d209e7e05d96e713939f=1614914406'''
}
path = 'https://world.huanqiu.com/api/list?node=%22/e3pmh22ph/e3pmh2398%22,%22/e3pmh22ph/e3pmh26vv%22,%22/e3pmh22ph/e3pn6efsl%22,%22/e3pmh22ph/efp8fqe21%22&offset={0}&limit=20'
print('开始爬取新闻链接...')
for i in tqdm(range(0,count)):
    try:
        url=path.format(20*i)    #offset为20
        res = requests.get(url,headers=headers)
        if res.content:
            items=res.json().get('list')
            for item in items:
                title=item.get('title')    
                aid=item.get('aid')
                if keyword in str(title) and title not in news_title:   #筛选关键词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值