今天将使用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的信息,请继续关注中培教育。