Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从json文件中的链接列表中删除新闻站点,仅返回第一页_Python_Json_Web Scraping - Fatal编程技术网

Python 从json文件中的链接列表中删除新闻站点,仅返回第一页

Python 从json文件中的链接列表中删除新闻站点,仅返回第一页,python,json,web-scraping,Python,Json,Web Scraping,我正在使用我找到的一个教程()来使用python库和feedparser搜索新闻站点 它从json文件中读取指向进程的链接,然后从中获取文章。问题是它只能从第一页获取文章,而不能迭代到第二页、第三页等等。因此,我编写了一个脚本,用站点的前50页填充json文件,例如www.site.com/page/x { 站点0:{“链接”:https://sitedotcom/page/0/"}, 站点1:{“链接”:https://sitedotcom/page/1/"}, “站点2”:{“链接”:”h

我正在使用我找到的一个教程()来使用python库和feedparser搜索新闻站点

它从json文件中读取指向进程的链接,然后从中获取文章。问题是它只能从第一页获取文章,而不能迭代到第二页、第三页等等。因此,我编写了一个脚本,用站点的前50页填充json文件,例如www.site.com/page/x


{
站点0:{“链接”:https://sitedotcom/page/0/"},
站点1:{“链接”:https://sitedotcom/page/1/"},
“站点2”:{“链接”:”https://sitedotcom/page/2/"}
等
}
#设置要下载文章的数量限制
限额=100000000
articles_数组=[]
数据={}
数据['Papers']={}
#用新闻站点加载JSON文件
以open('thingie2.json')作为数据文件:
companys=json.load(数据文件)
计数=1
#反复浏览每家新闻公司
对于公司,公司中的价值。项()
#如果JSON文件中提供了RSS链接,这将是首选。
#原因是,RSS提要通常提供更一致和正确的数据。RSS(富站点摘要;最初是RDF站点摘要;通常称为真正简单的联合)是一种
#允许用户以标准化的计算机可读格式访问在线内容更新的web提要
#如果不想从RSS提要中删除,只需在JSON文件中将RSS属性保留为空即可。
如果值为“rss”:
d=fp.parse(值['rss'])
打印(“从公司下载文章”)
报纸={
“rss”:值['rss'],
“链接”:值['link'],
“条款”:[]
}
对于d.条目中的条目:
#检查是否提供了发布日期,如果没有,则跳过该文章。
#这样做是为了保持数据的一致性,并防止脚本崩溃。
如果hasattr(条目“已发布”):
如果计数>限制:
打破
第条={}
文章['link']=entry.link
日期=entry.published\u已解析
文章['published']=datetime.fromtimestamp(mktime(date)).isoformat()
尝试:
内容=文章(entry.link)
content.download()
content.parse()
例外情况除外,如e:
#如果由于某种原因下载失败(例如404),脚本将继续下载
#下一篇文章。
打印(e)
打印(“继续…”)
持续
文章['title']=content.title
文章['text']=content.text
文章['authors']=content.authors
文章['top_image']=content.top_image
文章['movies']=content.movies
报纸[文章]。附加(文章)
articles\u array.append(article)
打印(计数,“从公司下载的文章”,url:,entry.link)
计数=计数+1
其他:
#如果未提供RSS提要链接,则这是回退方法。
#它使用python报纸库来提取文章
打印(“建筑工地”,公司)
纸张=报纸。构建(值['link',备忘录化文章=False)
报纸={
“链接”:值['link'],
“条款”:[]
}
非类型计数=0
对于纸质文章中的内容:
如果计数>限制:
打破
尝试:
content.download()
content.parse()
例外情况除外,如e:
打印(e)
打印(“继续…”)
持续
#同样,为了保持一致性,如果没有找到发布日期,则将跳过该文章。
#从同一份报纸上下载10篇没有出版日期的文章后,该公司将被跳过。
第条={}
文章['title']=content.title
文章['authors']=content.authors
文章['text']=content.text
文章['top_image']=content.top_image
文章['movies']=content.movies
文章['link']=content.url
文章['published']=content.publish\u日期
报纸[文章]。附加(文章)
articles\u array.append(article)
打印(计算“从公司下载的文章”,使用报纸,url:,content.url)
计数=计数+1
#非类型计数=0
计数=1
数据[‘报纸’][公司]=报纸
#最后,它将文章保存为CSV文件。
尝试:
f=csv.writer(打开('Scraped\u data\u news\u output2.csv','w',encoding='utf-8'))
f、 writerow([‘标题’、‘作者’、‘文本’、‘图像’、‘视频’、‘链接’、‘发布日期’]))
#印刷品(文章)
对于文章数组中的艺术家名称:
title=艺术家名称['title']
作者=艺术家名称['authors']
text=艺术家名称['text']
图像=艺术家名称['top\u image']
视频=艺术家名称[“电影”]
link=艺术家名称['link']
发布日期=艺术家名称['published']
#将每个艺术家的姓名和关联链接添加到一行
f、 writerow([标题、作者、文本、图像、视频、链接、发布日期])
例外情况除外:打印(e)

在“我的浏览器”中导航到这些网站会如预期的那样显示较旧且独特的文章。但当我在它们上运行脚本时,无论页码如何,它都会返回相同的文章。有什么我做错了或没有考虑的吗?

正如我所说,这是我在网上找到的代码,但它可以重置以前打印的文章编号的计数。显然,
链接没有使用,只是为了方便用户。正如我所说,这是我在网上找到的代码,但是它需要重置打印的物品编号的计数