2
我想從雅虎刮一些數據。我寫了一個可以工作的腳本 - 有些時候。有時當我運行腳本時,我能夠下載完整的頁面 - 其他時間,頁面僅部分加載 - 數據部分丟失。Web刮與dryscrape和BeautifulSoup
更令人困惑的是,當我在瀏覽器中導航到該頁面時,會顯示整個頁面。
這裏是我的代碼的要點:頁面
import dryscrape
from bs4 import BeautifulSoup
url = 'http://finance.yahoo.com/quote/SPY/options?p=SPY&straddle=false'
sess = dryscrape.Session()
sess.set_header('user-agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0')
sess.set_attribute('auto_load_images', False)
sess.set_timeout(360)
sess.visit(url)
soup = BeautifulSoup(sess.body(), 'lxml')
# Related to memory leak issue in webkit
sess.reset()
# Barfs (sometimes!) at the line below
sel_list = soup.find('select', class_='Fz(s)')
if sel_list is None or len(sel_list) == 0:
print('element not found on page!')
我附上圖片下方取出。這裏是網頁,通過網頁瀏覽器在互聯網上觀看時,:
現在,這裏是我通過類似於上面所示的一個腳本下拉頁面 - 它沒有數據!
任何人都可以明白爲什麼當數據通過我的腳本獲取的元素有時缺少什麼?同樣(更多?)重要的是,我該如何解決這個問題?
它可能是使用JavaScript下載一堆數據,並且您的腳本不運行Javascript。嘗試在瀏覽器中禁用Javascript並查看瀏覽器是否仍然獲取數據。 – LarsH
您是否嘗試在拉下url和將源代碼加載到bs4之間添加一個小的延遲? – jinksPadlock