如何解决刮板以批量复制文章
我正在研究一个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')
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。