2017-10-15 149 views
1

我想网页srape以下网站“url ='https://angel.co/life-sciences' ”。该网站包含超过8000个数据。从此页面我需要公司名称和链接,加入日期和关注者等信息。在此之前,我需要点击按钮来排列追随者列。然后通过点击更隐藏的按钮加载更多信息。该页面最多可以点击(更隐藏)内容20次,之后它不会加载更多信息。但是,我可以通过对其进行排序仅收集顶级的关注者信息。这里我实现了click()事件,但它显示错误。使用硒和beautifulsoup网络报废..麻烦解析和选择按钮

Unable to locate element: {"method":"xpath","selector":"//div[@class="column followers sortable sortable"]"} #before edit this was my problem, using wrong class name 

所以我需要在这里给出更多的睡眠时间?(试过给人如此,但同样的错误)

我需要解析上述所有信息,然后访问这些网站的各个路段刮的内容DIV该HTML页面只。

请给我建议的方式来做到这一点

这里是我当前的代码,我还没有添加HTML中使用beautifulsoup解析部分。

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
from time import sleep 
from selenium import webdriver 
from bs4 import BeautifulSoup 
#import urlib2 
driver = webdriver.Chrome() 
url='https://angel.co/life-sciences' 
driver.get(url) 
sleep(10) 

driver.find_element_by_xpath('//div[@class="column followers sortable"]').click()#edited 
sleep(5) 
for i in range(2): 
    driver.find_element_by_xpath('//div[@class="more hidden"]').click() 
    sleep(8) 

sleep(8) 
element = driver.find_element_by_id("root").get_attribute('innerHTML') 
#driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML") 
#WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CLASS_NAME, 'more hidden'))) 
''' 
results = html.find_elements_by_xpath('//div[@class="name"]') 
# wait for the page to load 

for result in results: 
    startup = result.find_elements_by_xpath('.//a') 
    link = startup.get_attribute('href') 
    print(link) 
''' 
page_source = driver.page_source 

html = BeautifulSoup(element, 'html.parser') 
#for link in html.findAll('a', {'class': 'startup-link'}): 
#  print link 

divs = html.find_all("div", class_=" dts27 frw44 _a _jm") 

上面的代码是工作,是给我的HTML源之前,我已经加入了关注者点击事件。

我的最终目标是将公司名称,其链接,加入日期,追随者数量和公司描述(访问个人链接后获得的)这五个信息导入CSV或xls文件。

帮助和意见apprecieted。 这是我的第一个Python工作和硒,所以很困惑,需要指导。

由于:-)

回答

1

click该方法的目的是模拟鼠标点击;它的使用上可以单击的元素,比如按钮,下拉列表,复选框,等您应用了此方法的div元件,其点击。像divspanframe等元素被用于组织HTML,并提供字体装饰等

为了让这段代码工作,你需要确定在页面实际上是可点击的元素。

+0

是的但更隐藏的div元素之前,这是可点击..并加载数据 – Kanhu

+0

但更隐藏的元素是可点击那么为什么这不应该? – Kanhu

+0

我给你一个upvote,因为它帮助我以不同角度更多地查看我的代码..感谢Bill – Kanhu

0

哎呀我的打字错误或在这里的一些愚蠢的错误,我使用div类名称错了,它是“一栏的追随者排序”,而不是我所用“柱追随者排序选择”。 :-( 现在上面的作品相当不错..但任何人都可以引导我与美丽的HTML解析部分?

+0

你应该编辑你的问题,请。 –