首页 > 解决方案 > 如何在 Python 中进行网页抓取?

问题描述

我想抓取特定的财务网络。但在我的一生中,我都是这样做的。我不懂 HTML,所以对我来说很难。我想学习,因为我需要一个例子来开始网络抓取很多表格。该网络是智利的一个机构,名为“Comisión para el Mercado financiero”。The url is: " http://www.cmfchile.cl/institucional/inc/valores_cuota/valor_serie.php?v1=C1KB5&v2=LPKA0ISQAKEHITB64IBM&v3=4ABCIV864AJ35MN64IBM&v4=V864A4ABCI&v5=J35MNS8IYM&v6=4ABCIV864A4ABCIV864A&v7=V864AISQAK&v8=V864A64IBM&v9=37G70LN68AGLD87IEAIXGLD87OL18863409LN68AOL188JKT99QHFLBMLXL410163LN68A&v10=21QYE48BCX99KWAEF88BWM6YB&v11=63409LN68AGLD8737GH0J35MN&v12=63409LN68AGLD8737GH04ABCI "

有人可以告诉我该怎么做吗?我知道我可以使用 BeautifulSoup 和 requests 模块,但仅此而已。如果有一本关于 Python 网络抓取的书,将会非常有帮助。

标签: pythonweb-scrapingbeautifulsoup

解决方案


正如您正确提到的那样,这是“Web Scraping”,python 具有同样的惊人模块。在我们进一步进行之前,了解技术细节对我们来说很重要。

最常用的模块之一是 -> BeautifulSoup

因此,要从任何网页获取信息,

  • 您需要先了解网页的结构。
  • 此外,在某些情况下,考虑到我们出于其他原因进一步使用网页中的此信息,这可能不完全合法。
  • 更大的挑战是,网页是否支持抓取?这对进一步进行更为重要。
    • 你怎么能找到它?这可以通过查看网页的来源来弄清楚。
    • 如果您要抓取的文本/信息在源代码或其中一个 href 中可见,那么应该可以使用 Beautifulsoup 抓取它。

解决方案 -

  • 在找到解决方案之前,您必须了解 HTML 结构以及识别网页上任何元素的方式
  • 有很多方法,比如

    • 使用网页上任何元素的“id”
    • 直接使用类或标记名
    • 使用元素的 xpath
    • 或者,以上任何一项的组合
  • 一旦你达到这一点,现在你必须清楚我们将继续前进的方式

#make a request to the webpage, and grab the html respone
page = requests.get("your url here").content

#pass it on to beautifulsoup 
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')

#Depending on how you want to find, you can use  findbyclass, findbytag, and #other methods 
soup.findAll('your tag')

推荐阅读