Python收集新闻其他辅助功能的实现

学习笔记整理:

1. 异常情况处理和连续收集

有时信息收集时会发生失败的情况,但为了不影响后续,可以在代码中加入try: except: 可以有效避免这种情况的发生。如果需要24小时不间断收集,可以把实现函数放在while True的循环语句中,这样的话信息收集可以持续更迭。当然这样收集有点浪费资源,所以可以在代码中设置每间隔多长时间收集一次。实现代码如下:

while True:  # 一直运行的意思
    companys = ['华能信托', '阿里巴巴', '万科集团', '百度集团', '腾讯', '京东']
    for i in companys:
        try:
            baidu(i)
            print(i + '百度新闻爬取成功')
        except:
            print(i + '百度新闻爬取失败')

    time.sleep(3600)  # 每3600秒运行一次,即3小时运行一次,注意缩进

2. 收集多页新闻

此功能的实现,需要在源代码基础上修改三个地方:1. 在原函数中多加入一个参数page 2. 在主体部分加入围绕页面的循环语句3. 避免收集失败,可以在主体第二层循环中加入间隔时间time.sleep,即每收集完一个公司的信息休息几秒再收集下个公司。实现代码如下:

# 爬取多个公司的多页, 可以给函数传入两个参数,供参考
def baidu(company, page):
    num = (page - 1) * 10  # 参数规律是(页数-1)*10
    url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=' + company + '&pn=' + str(num)
    res = requests.get(url, headers=headers).text
companys = ['华能信托', '阿里巴巴', '万科集团', '百度集团', '腾讯', '京东']
for company in companys:
    for i in range(10):  # 这里一共爬取了10页
        baidu(company, i+1)  # i是从0开始的序号,所以要写成i+1表示第几页
        print(company + '第' + str(i+1) + '页爬取成功')  # i是从0开始的序号,所以写i+1
        time.sleep(3)  # 爬太快会被百度反爬

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值