网页表格抓取( Table表格型数据网页结构?用pd._html)

优采云 发布时间: 2021-10-01 23:26

  网页表格抓取(

Table表格型数据网页结构?用pd._html)

  最简单的爬虫程序:用熊猫抓取表数据

  让我们承认,使用pandas爬行表数据存在一些限制

  它仅适用于捕获表数据。让我们先看看什么样的网页符合条件

  什么样的网页结构

  当您使用浏览器打开网页并使用F12查看其HTML结构时,您会发现合格的网页结构具有一个共同的功能

  如果您发现HTML结构采用下表格式,则可以直接使用pandas

  

     

     

     ...

     

     

     

        

            ...

        

        ...

        ...

        ...

        ...

        ...

    

  这看起来并不直观。它开启了北京空气质量的新篇章网站

  F12。左边是网页中的质量索引表。其网页结构完全符合表数据网页结构

  

  它非常适合和熊猫一起攀爬

  pd.read uhtml()

  Pandas提供了read_html(),to_html()两个函数用于读取和写入html格式的文件。这两个函数非常有用。一种是容易地将复杂的数据结构(如dataframe)转换为HTML表;另一个可以在几行代码中获取表数据,而无需复杂的爬虫程序。这是人工制品![1]

  特定pd.read uhtml()参数,可以查看其官方文档:

  现在直接把刚才的网页打开

  import pandas as pd

df = pd.read_html("http://www.air-level.com/air/beijing/", encoding='utf-8',header=0)[0]

  这里只添加了几个参数。Header是指定列标题的行。对于guide包,只需要两行代码

  df.head()

  

  对比结果表明,成功地获得了表格数据

  

  多表

  在最后一个案例中,我不知道我的朋友是否注意到了

  pd.read_html()[0]

  对于pd.read uhtml()获得网页结果后,添加[0]。这是因为网页上可能有多个表。在这种情况下,需要使用列表的切片表[x]指定要获取的表

  例如,在网站中,空气质量排名页面显然由两个表格组成

  

  此时,如果您使用PD。阅读HTML()以获取右侧的表,只需稍加修改即可

  import pandas as pd

df = pd.read_html("http://www.air-level.com/rank", encoding='utf-8',header=0)[1]

  相反,您可以看到页面右侧的表已成功获取

  

  以上是PD。阅读uhtml()以简单地抓取静态网页。但是我们使用Python的原因是为了提高效率。但是,如果只有一个网页,则鼠标更容易选择复制。因此,Python操作的最大优势将体现在批处理操作上

  批量爬网

  让我们向您展示如何使用pandas批量抓取Web表数据

  以新浪金融机构持股汇总数据为例:

  

  总共有47个页面,47个网页URL是通过for循环构建的,然后是pd.read uuhtml()循环爬网

  df = pd.DataFrame()

for i in range(1, 48):

    url = f'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jgcg/index.phtml?p={i}'

    df = pd.concat([df, pd.read_html(url)[0]]) # 爬取+合并DataFrame

  或者几行代码,很容易解决

  

  共获得47页和1738条数据

  

  通过以上小案例,相信您可以轻松掌握熊猫表数据的批量抓取

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线