我有一堆新闻的csv,我希望使用报纸3k包从那些文章中提取正文并将其另存为txt文件。我想创建一个脚本,该脚本遍历csv中的每一行,提取URL,从URL中提取文本,然后将其另存为唯一命名的txt文件。有人知道我该怎么做吗?我是Python的新手,很抱歉,如果这很简单。
我只有下面的代码。在弄清楚如何将每个正文文本另存为txt文件之前,我认为我应该尝试并仅获取脚本以从csv中的每一行打印文本。
import newspaper as newspaper
from newspaper import Article
import sys as sys
import pandas as pd
data = pd.read_csv('/Users/alexfrandsen14/Desktop/Projects/newspaper3k-
scraper/candidate_coverage.csv')
data.head()
for index,row in data.iterrows():
article_name = Article(url=['link'], language='en')
article_name.download()
article_name.parse()
print(article_name.text)
答案 0 :(得分:0)
由于所有url都在同一列中,因此使用for循环直接访问该列更加容易。我将在这里介绍一些解释:
# to access your specific url column
from newspaper import Article
import sys as sys
import pandas as pd
data = pd.read_csv('/Users/alexfrandsen14/Desktop/Projects/newspaper3k-scraper/candidate_coverage.csv')
for x in data['url_column_name']: #replace 'url_column_name' with the actual name in your df
article_name = Article(x, language='en') # x is the url in each row of the column
article.download()
article.parse()
f=open(article.title, 'w') # open a file named the title of the article (could be long)
f.write(article.text)
f.close()
我以前没有尝试过这个软件包,但是阅读教程后,这似乎应该可以工作。通常,您通过以下行访问数据框中的url列:
for x in data['url_column_name']:
您将用该列的实际名称替换“ url_column_name”。
然后,x将是第一行中的url,因此您可以将其传递给Article(根据教程的判断,您无需在x周围使用方括号)。它将首先下载该x并进行解析,然后打开一个带有文章标题名称的文件,将文本写入该文件,然后关闭该文件。
然后它将对第二个x和第三个x进行相同的操作,直到您用完所有网址为止。
我希望这会有所帮助!