使用Selenium在python中搜索雅虎财经评论

时间:2017-11-04 23:25:38

标签: python html selenium screen-scraping

全新的这里和python相对较新。我正在处理代码,只搜索来自雅虎财经对话页面的评论。我从APPL页面开始(https://finance.yahoo.com/quote/AAPL/community/)。我在Edge浏览器中使用inspect元素功能并找到了注释。示例评论:

 <div class="C($c-fuji-grey-l) Mb(2px) Fz(14px) Lh(20px)" data-reactid="44">$175 tomorrow vote up or not vote down ! I vote up</div>

我已经编写了以下基本代码来获取第一条评论(我不需要回复)。我想如果我能成功得到一条评论,那么我可以把它们全部搞定。我意识到我必须处理其他评论的加载,但一次只能做一步。

import requests
from bs4 import BeautifulSoup

page = requests.get("https://finance.yahoo.com/quote/AAPL/community/")
soup = BeautifulSoup(page.content, 'html.parser')
comm = soup.find(class_='C($c-fuji-grey-l) Mb(2px) Fz(14px) Lh(20px)')
print(comm)

我一直在&#34;没有&#34;作为输出。我不相信这里涉及到javascript(我在HTML的底部看到了脚本标签,但没有看到评论)。我相信我所做的事情太简单了,但我不知道如何继续。我怎样才能成功地抓住这些评论?绝对对不同的解决方案持开放态度并感谢阅读。

编辑 11-7-17

我使用selenium重新编写程序并获得了页面上存在的注释。我现在正在执行以下步骤:

1)在抓取任何内容之前,让程序单击最新反应的下拉选项。

2)让程序点击&#34;显示更多&#34;页面底部的按钮,用于渲染更多用于抓取的注释。我想删除去年的评论,但我没有在html中看到任何真正的时间戳,只有&#34; 1天前&#34;,&#34;两天前&#34;等我以为我可以尝试让程序一直点击&#34;显示更多&#34;按钮,直到它到达第一个评论的时间戳为&#34; 1年前&#34;。

3)抓取评论者用户名和评论日期。理想情况下,我希望将评论者用户名,评论日期和评论保存在文件中(csv或JSON很好)。

我的代码是:

 from selenium import webdriver
 driver = webdriver.Chrome("C:/YOUR_PATH_HERE/chromedriver.exe")
 driver.get("https://finance.yahoo.com/quote/AAPL/community/")
 timeout=10
 comments = driver.find_elements_by_xpath("//div[@class='C($c-fuji-grey-l) Mb(2px) Fz(14px) Lh(20px)']")
 coments = [x.text for x in comments]
 print(len(coments))
 print(coments)

与往常一样,任何帮助都表示赞赏。

0 个答案:

没有答案