刮板以批量复制文章

问题描述

我正在研究一个AI项目,其中一个步骤是从在线商店获取约5,000篇文章。

我是一个初学者,所以请保持友好。我已经找到了一个非常容易从URL结构上进行刮取的网站-我只需要一个刮板就可以从该站点中提取整篇文章(我们将使用AI大量分析这些文章)。>

包含每篇文章文本的div在整个网站上都是相同的-“ col-md-12 description-content-wrap”。

有人知道一个简单的Python脚本,该脚本将简单地通过URL的.CSV,从每篇文章的上面列出的^ 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')

结果:

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...