今天將使用python抓取一個股票市場資料的重要來源。我們將為此編寫一個刮板。使用該刮板,您將可以從一個平臺上刮刮任何公司的股票資料。如您所知,想使事情變得簡單,為此還將使用網路刮板,這將提高您的刮板效率。為什麼使用這個工具?該工具將幫助我們使用數百萬個旋轉代理來抓取動態網站,以免被阻止。它還提供了驗證碼清除功能。它使用無標題的chrome抓取動態網站。
要求
通常,網頁抓取分為兩個部分:
通過發出HTTP請求獲取資料通過解析HTMLDOM提取重要資料
庫和工具
BeautifulSoup是一個Python庫,用於從HTML和XML檔案中提取資料。通過請求, 您可以非常輕鬆地傳送HTTP請求。網路抓取工具以提取目標網址的HTML程式碼。
建立
我們的設定非常簡單。只需建立一個資料夾並安裝BeautifulSoup和請求即可。要建立資料夾並安裝庫,請在給定命令下方鍵入。我假設您已經安裝了Python3.x。
mkdirscraper
pipinstallbeautifulsoup4
pipinstallrequests
現在,使用您喜歡的任何名稱在該資料夾中建立一個檔案。我正在使用scraping.py。
首先,您必須註冊scrapingdogAPI。它將為您提供1000個免費積分。然後,只需在檔案中匯入BeautifulSoup和請求即可。像這樣。
frombs4importBeautifulSoupimportrequestswww.zpedu.com/it/
我們要抓的東西
這是我們將提取的欄位列表:
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物件陣列,其中包含亞馬遜公司的財務資料。這樣,我們可以從任何網站上抓取資料。
本作品採用《CC 協議》,轉載必須註明作者和本文連結