爬虫 只爬取网页部分内容_Python爬虫~已爬取目标网站所有文章,后续如何只获取新文章(实例58)...

实例57的爬虫程序已经一次性获取了想要的文章,后续还会不定期的下载新文章,那怎么办呢?不可能每次都运行那个程序,然后重新从头到尾下载一遍吧。那样也忒傻了吧,坚决不干傻事。咱稍稍修改一个“更新爬虫”程序,只需双击,有新文章则自动下载,没新文章则原地不动。理理思路先:

  1. 1. 将上次获取的4946篇文章的链接作为一个数据库存在一个文本文件中

  2. 2. 后续只获取最新的前10页的文章链接,若链接已存在,则跳过

  3. 3. 若链接不存在,则加入数据库,并下载该链接里的文章。

于是乎,开始按这个思路去整理程序。

#将所有历史文章的链接存入文本文件中
import requests
import json

header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'}

form_data = { '_q': 'Article.list',
'siteId': '7e0b3b27-2622-4aa7-b6f8-abfe5c5df922',
'catalogId': '34f92da3-d6d0-4e96-899f-d7f581c18162',
'pub': 'true',
'limit': 10000,
'start': 1}

#这是异步加载,请求方法是POST
url = "http://www.bicpa.org.cn/dtzj/zxgg/getArticles.action"
res = requests.post(url, data = form_data, headers = header)
article_data0 =res.text.split("{success:true,datas:")[1] #去掉字符串前面的无用信息“{success:true,datas:”
article_data = article_data0.split(",total:")[0] #去掉字符串后面的无用信息“,total:4946}”
obj = json.loads(article_data)

#将所有文章链接写入文本文件
path = r"http://www.bicpa.org.cn"
links_file = open('links.txt', 'a') #避免覆盖已有数据,用添加模式`a`写入
for info in obj:
    link = path + info['url'] + info['primaryKey']+&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值