2017-10-15 114 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

你應該編輯你的問題,請。 –