你刮掉該頁面由JavaScript,請求渲染和urllib的無法處理JavaScript。我建議你使用硒和BeautifulSoup來提取數據。 這是當JavaScript被禁用:
你想要的數據是在這個網址:
http://financials.morningstar.com/ajax/ReportProcess4HtmlAjax.html?&t=XNAS:AAPL®ion=usa&culture=en-US&ops=clear&cur=&reportType=is&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=378724&callback=jsonp1482077238548&_=1482077239651
我把它放在BS4,你可以通過你自己得到的數據:
import requests, bs4, json
r = requests.get('http://financials.morningstar.com/ajax/ReportProcess4HtmlAjax.html?&t=XNAS:AAPL®ion=usa&culture=en-US&ops=clear&cur=&reportType=is&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=378724&callback=jsonp1482077238548&_=1482077239651')
js = r.text.strip('jsonp1482077238548()')
html_str = json.loads(js)['result']
soup = bs4.BeautifulSoup(html_str, 'lxml')
出來:
<html>
<body>
<div id="baseline" style="display:none">
<div>
156508000000
</div>
<div>
170910000000
</div>
<div>
182795000000
</div>
<div>
233715000000
</div>
<div>
215639000000
</div>
<div>
215639000000
</div>
</div>
<div class="left ">
<div class="r_xcmenu rf_table_left">
<div class="rf_header ">
<div class="lbl " currency="USD" fiscalyearend="September" fyenumber="9" id="unitsAndFiscalYear">
</div>
</div>
<div class="rf_crow1" id="label_i1" style="_height:16px; _float:none;">
<div class="lbl">
Revenue
</div>
<div class="chart_contain_free" id="chart_i1">
<div class="chart_icon">
</div>
</div>
</div>
我想可能會有一些複選框檢查當發佈beautifulsoup問題時會說_ _ x這樣的問題,我明白請求+ bs不能用於刮取用javascript動態加載的元素,並且我確信情況並非如此。 PS:如果是這樣的話,我會首先使用硒._ –
發佈html代碼和您想要的數據表單,以便我可以爲您編寫代碼 –
是不是在頁面的檢查頁面選項中找到的html代碼?如果你可以幫我刮我需要的數字我願意付錢給你一些錢通過付費朋友 –