我有一堆新闻文章的csv,我希望使用newspaper3k包从这些文章中提取正文并将它们保存为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)
由于所有 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 执行相同的操作,直到您用完 url。
我希望这有帮助!