您好,我嘗試從網站上刮取數據進行建模(fantsylabs dotcom)有困難。我只是一個黑客,所以原諒我對科學幻想術語的無知。我想要完成的是...Python Web刮(美麗的湯,硒和PhantomJS):只刮整個頁面的一部分
使用硒登錄到網站,並導航到頁面的數據。
## Initialize and load the web page url = "website url" driver = webdriver.Firefox() driver.get(url) time.sleep(3) ## Fill out forms and login to site username = driver.find_element_by_name('input') password = driver.find_element_by_name('password') username.send_keys('username') password.send_keys('password') login_attempt = driver.find_element_by_class_name("pull-right") login_attempt.click() ## Find and open the page with the data that I wish to scrape link = driver.find_element_by_partial_link_text('Player Models') link.click() time.sleep(10) ##UPDATED CODE TO TRY AND SCROLL DOWN TO LOAD ALL THE DYNAMIC DATA scroll = driver.find_element_by_class_name("ag-body-viewport") driver.execute_script("arguments[0].scrollIntoView();", scroll) ## Try to allow time for the full page to load the lazy way then pass to BeautifulSoup time.sleep(10) html2 = driver.page_source soup = BeautifulSoup(html2, "lxml", from_encoding="utf-8") div = soup.find_all('div', {'class':'ag-pinned-cols-container'}) ## continue to scrape what I want
這個過程的工作,它登錄時,導航到正確的頁面,但一旦頁面完成動態加載(30秒),把它傳遞給beautifulsoup。我在表格中看到大約300多個實例,我想要刮擦....但是,bs4刮板只能分析大約30個300的實例。從我自己的研究看來,這可能是數據動態加載的問題JavaScript,只有什麼推送到HTML正在解析bs4? (Using Python requests.get to parse html code that does not load at once)
這可能是任何人都很難提供意見,以重現我的例子,而無需創建網站上的個人資料,但會使用phantomJS初始化瀏覽器全部是需要以捕獲所有以「搶」的所有實例所需的數據?作爲香港專業教育學院從未有過處理動態頁/刮的JavaScript如果這是我遇到
driver = webdriver.PhantomJS() ##instead of webdriver.Firefox()
任何想法或經驗,將不勝感激。
修訂Alecs響應後:
下面是目標數據的屏幕截圖(藍色高亮顯示)。您可以看到圖像右側的滾動條,並將其嵌入到頁面中。我還提供了此容器中頁面源代碼的視圖。
我修改了我提供試圖向下滾動至底部,並完全加載頁面的原代碼,但它不能執行此操作。當我將驅動程序設置爲Firefox()時,我可以看到頁面通過外滾動條向下移動,但不在目標容器內。我希望這是有道理的。
再次感謝您的任何建議/指導。
掌握成爲一名黑客的藝術是什麼編程是怎麼一回事。 –