软件研发

如何使用python进行网页爬取?

2020-08-06 14:37:57 | 来源:中培企业IT培训网

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

猜你喜欢