今天將使用python抓取一個股票市場數據的重要來源。我們將為此編寫一個刮板。使用該刮板,您將可以從一個平臺上刮刮任何公司的股票數據。如您所知,想使事情變得簡單,為此還將使用網絡刮板,這將提高您的刮板效率。為什么使用這個工具?該工具將幫助我們使用數百萬個旋轉代理來抓取動態網站,以免被阻止。它還提供了驗證碼清除功能。它使用無標題的chrome抓取動態網站。
要求
通常,網頁抓取分為兩個部分:
通過發出HTTP請求獲取數據通過解析HTMLDOM提取重要數據
庫和工具
BeautifulSoup是一個Python庫,用于從HTML和XML文件中提取數據。通過請求,?您可以非常輕松地發送HTTP請求。網絡抓取工具以提取目標網址的HTML代碼。
建立
我們的設置非常簡單。只需創建一個文件夾并安裝BeautifulSoup和請求即可。要創建文件夾并安裝庫,請在給定命令下方鍵入。我假設您已經安裝了Python3.x。
mkdirscraper
pipinstallbeautifulsoup4
pipinstallrequests
現在,使用您喜歡的任何名稱在該文件夾中創建一個文件。我正在使用scraping.py。
首先,您必須注冊scrapingdogAPI。它將為您提供1000個免費積分。然后,只需在文件中導入BeautifulSoup和請求即可。像這樣。
frombs4importBeautifulSoupimportrequests
我們要抓的東西
這是我們將提取的字段列表:
1.上一個收盤價
2.打開
3.競標
4.問
5.天的范圍
6.52周范圍
7.音量
8.平均卷
9.市值
10.Beta
11.市盈率
12.每股收益
13.收益率
14.預期股息和收益率
15.除息日
16.1y目標EST
準備階段
現在,由于我們具備了準備刮板的所有要素,因此我們應該對目標URL進行GET請求以獲取原始HTML數據。如果您不熟悉抓取工具,請敦促您仔細閱讀其文檔。現在,我們將使用請求庫抓取YahooFinance的財務數據,如下所示。
r=requests.get.text
這將為您提供該目標URL的HTML代碼。
現在,您必須使用BeautifulSoup解析HTML。
soup=BeautifulSoup(r,’html.parser’)
現在,在整個頁面上,我們有四個“tbody”標簽。我們對前兩個感興趣,因為我們目前不需要第三和第四個“tbody”標簽中的可用數據。
首先,我們將使用變量“湯”找出所有這些“身體”標簽。
alldata=soup.find_all(“tbody”)
如您所見,前兩個“tbody”具有8個“tr”標簽,每個“tr”標簽具有兩個“td”標簽。
try:
table1=alldata[0].find_all(“tr”)except:
table1=Nonetry:
table2=alldata[1].find_all(“tr”)except:
table2=None
現在,每個“tr”標簽都有兩個“td”標簽。第一個td標記由屬性的名稱組成,另一個具有該屬性的值。這有點像鍵值對。
此時,我們將在開始for循環之前聲明一個列表和一個字典。
l={}
u=list()
為了簡化代碼,我將為每個表運行兩個不同的“for”循環。首先是“table1”
foriinrange(0,len(table1)):
try:
table1_td=table1[i].find_all(“td”)
except:
table1_td=None
l[table1_td[0].text]=table1_td[1].text
u.append(l)
l={}
現在,我們要做的是將所有td標簽存儲在變量“table1_td”中。然后,我們將第一個和第二個td標簽的值存儲在“字典”中。然后,我們將字典推入列表。由于我們不想存儲重復的數據,因此我們將在最后將字典設為空。對于“table2”,將遵循類似的步驟。
foriinrange(0,len(table2)):
try:
table2_td=table2[i].find_all(“td”)
except:
table2_td=None
l[table2_td[0].text]=table2_td[1].text
u.append(l)
l={}
然后,當您打印列表“u”時,您將得到一個JSON響應。
{
“Yahoofinance”:[
{
“PreviousClose”:“2,317.80”
},
{
“Open”:“2,340.00”
},
{
“Bid”:“0.00x1800”
},
{
“Ask”:“2,369.96x1100”
},
{
“Day’sRange”:“2,320.00–2,357.38”
},
{
“52WeekRange”:“1,626.03–2,475.00”
},
{
“Volume”:“3,018,351”
},
{
“Avg.Volume”:“6,180,864”
},
{
“MarketCap”:“1.173T”
},
{
“Beta(5YMonthly)”:“1.35”
},
{
“PERatio(TTM)”:“112.31”
},
{
“EPS(TTM)”:“20.94”
},
{
“EarningsDate”:“Jul23,2020—Jul27,2020”
},
{
“ForwardDividend&Yield”:“N/A(N/A)”
},
{
“Ex-DividendDate”:“N/A”
},
{
“1yTargetEst”:“2,645.67”
}
]
}
沒那么神奇。我們僅在5分鐘的設置過程中就刮掉了Yahoo財務。我們有一個python對象數組,其中包含某公司的財務數據。這樣,我們可以從任何網站上抓取數據。
以上即是關于如何使用python進行網頁爬取的全部內容介紹,想了解更多關于python的信息,請繼續關注中培偉業。