python - 批量复制文章的刮刀
问题描述
我正在从事一个 AI 项目,其中一个步骤是从在线渠道获取约 5,000 篇文章。
我是一个初学者程序员,所以请善待。我发现了一个非常容易从 URL 结构中抓取的网站——我只需要一个可以从网站中获取整篇文章的抓取工具(我们将使用 AI 批量分析文章)。
包含每篇文章的文章文本的 div 在整个站点中都是相同的 - “col-md-12 description-content-wrap”。
有谁知道一个简单的 Python 脚本,它可以简单地通过一个 .CSV 的 URL,从每篇文章的上面列出的 ^ div 中提取文本,并将其输出为纯文本?我找到了一些解决方案,但没有一个是我需要的 100%。
理想情况下,所有 5,000 篇文章都将输出到一个文件中,但如果它们都需要分开,那也没关系。提前致谢!
解决方案
大约一周前,我做了一些与此类似的事情。这是我想出的代码。
from bs4 import BeautifulSoup
import urllib.request
from pandas import DataFrame
resp = urllib.request.urlopen("https://www.cnbc.com/finance/")
soup = BeautifulSoup(resp, from_encoding=resp.info().get_param('charset'))
substring = 'https://www.cnbc.com/'
df = ['review']
for link in soup.find_all('a', href=True):
#print(link['href'])
if (link['href'].find(substring) == 0):
# append
df.append(link['href'])
#print(link['href'])
#list(df)
# convert list to data frame
df = DataFrame(df)
#type(df)
#list(df)
# add column name
df.columns = ['review']
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sid = SentimentIntensityAnalyzer()
df['sentiment'] = df['review'].apply(lambda x: sid.polarity_scores(x))
def convert(x):
if x < 0:
return "negative"
elif x > .2:
return "positive"
else:
return "neutral"
df['result'] = df['sentiment'].apply(lambda x:convert(x['compound']))
df['result']
df_final = pd.merge(df['review'], df['result'], left_index=True, right_index=True)
df_final
df_final.to_csv('C:\\Users\\ryans\\OneDrive\\Desktop\\out.csv')
结果:
推荐阅读
- visual-studio-code - 是否可以在 Linux 中使用 vscode-car-plugin 创建 .car 文件?
- webpack - 如何解决这个问题:gulp-inject 没有注入 _custom.scss 和 portal_normal.ftl
- bash - 如何将具有多个标志的字符串分配给可在命令中重用的变量?
- javascript - 复选框起作用,但没有动画
- json - 在 Julia 中使用类似 JSON 的结构遍历嵌套字典
- python - 从 Python 类生成 JSON 模式规范
- java - 为什么我的年度闹钟无法正常工作?
- jquery - Bootsrap 模态 iframe 未显示
- python - 如何将 dl.Overlay 与多个输入一起使用?
- javascript - 难以理解去除箭头函数的价值 () =>