python网页数据抓取( Python请求PythonRequests库被称为HTTPforHumans库下载)

优采云 发布时间: 2022-02-06 08:22

  python网页数据抓取(

Python请求PythonRequests库被称为HTTPforHumans库下载)

  1urllib.error

2

  其中收录抛出的异常

  1urllib.request

2

  1urllib.parse

2

  用于解析 URL,以及

  1urllib.robotparser

2

  用于解析 robots.txt 文件的内容。Urllib 并不容易使用,但可以帮助您进行身份验证、cookie、URL 编码和代理等。它应该只在需要对请求进行高级控制时使用。

  如何安装 Urlli

  如前所述,Urllib 包已收录在标准 python 库中,因此您无需再次安装。只需将其导入您的代码并使用它。

  urllib 代码示例

  以下代码将向维基百科的主页发送 GET 请求并打印出响应。响应将是页面的整个 HTML。

  1import urllib.request as rq

2

3get_content = rq.urlopen("https://en.wikipedia.org/wiki/Main_Page")

4

5print(get_content.read().decode("utf-8"))

6

  Python 请求

  Python Requests 库,称为 Python HTTP for Humans,是一个第三方库,旨在简化处理 HTTP 请求和 URL 的过程。它建立在 Urllib 之上,并提供易于使用的界面。

  除了比 urllib 更易于使用之外,它还具有更好的文档。说到人气,可以说 Requests 是最受欢迎的 Python 库之一,因为它是下载次数最多的 Python 包。它支持国际化、会话 cookie 和身份验证,以及连接池和超时,以及多部分文件上传。

  如何安装

  Python Requests 是第三方包,所以需要先安装后才能使用。推荐的安装方式是使用 pip 命令。

  1>> pip install requests

2

  Python 请求代码示例

  下面的代码将下载与 Urllib 下载的相同页面,因此您可以进行比较,即使您在使用其高级功能时存在差异。

  1>> import requests

2

3>>get_content = requests.get("https://en.wikipedia.org/wiki/Main_Page")

4

5>> print(get_content.text)

6

  硒

  Selenium Web Driver 是一个浏览器自动化工具——你用它做什么完全取决于你。它在网络爬虫中变得流行,因为它可以用来从 JavaScript 丰富的 网站 中爬取数据。Python Requests 库和 Scrapy 等传统工具无法渲染 JavaScript,因此您需要 Selenium 来执行此操作。

  Selenium 可用于自动化许多浏览器,包括 Chrome 和 Firefox。在无头模式下运行时,您实际上不会看到浏览器打开,但它会模拟浏览器环境中的操作。使用 Selenium,您可以模拟鼠标和键盘操作、访问站点并获取您想要的任何内容。

  如何安装硒

  您需要满足两个要求才能使用 Selenium Web 驱动程序来自动化您的浏览器。其中包括 Selenium Python 绑定和浏览器驱动程序。在本文中,我们将使用 Chrome,因此您需要从此处下载 Chrome 驱动程序 - 确保它适用于您正在使用的 Chrome 版本。安装后,解压缩并将 chromedriver.exe 文件放在与 python 脚本相同的目录中。有了这个,您可以使用下面的 pip 命令安装 selenium python 绑定。

  1pip install requests

2

  硒代码示例

  下面的代码展示了如何使用 Selenium 搜索亚马逊。请记住,脚本必须与

  1chromedriver.exe

2

  文档

  1from selenium import webdriver

2

3from selenium.webdriver.common.keys import Keys

4

5driver = webdriver.Chrome()

6

7driver.get("https://www.indeed.com/")

8

9amazon_search = driver.find_element_by_id("twotabsearchtextbox")

10

11amazon_search.send_keys("Web scraping for python developers")

12

13amazon_search.send_keys(Keys.RETURN)

14

15driver.close()

16

  使用 python 和 Selenium,你可以像这样 网站 这样跨不同的工作平台为 python 开发人员找到当前的职位空缺和聚合数据,因此,你可以轻松地从 Glassdoor、flexjobs、monsters 等中刮取 python 开发人员数据。

  美丽汤

  BeautifulSoup 是一个用于解析 HTML 和 XML 文件的解析库。它将网页文档转换为解析树,以便您可以以 Pythonic 方式遍历和操作它。使用 BeautifulSoup,您可以解析出任何您想要的数据,只要它是 HTML 格式的。重要的是要知道 BeautifulSoup 没有自己的解析器,它位于其他解析器之上,例如 lxml,甚至是 python 标准库中可用的 html.parser。在解析网络数据时,

  BeautifulSoup 是最受欢迎的选择。有趣的是,它很容易学习和掌握。用 BeautifulSoup 解析网页时,即使页面的 HTML 杂乱复杂,也没有问题。

  如何安装 BeautifulSoup

  像讨论的所有其他库一样,您可以通过 pip 安装它。在命令提示符中输入以下命令。

  1pip install beautifulsoup4

2

  BeautifulSoup 代码示例

  下面是获取尼日利亚 LGA 列表并将其打印到控制台的代码。BeautifulSoup 没有下载网页的能力,所以我们将使用 Python Requests 库。

  1import requests

2

3from bs4 import BeautifulSoup

4

6

7url = "https://en.wikipedia.org/wiki/Local_government_areas_of_Nigeria"

8

9page_content = requests.get(url).text

10

11soup = BeautifulSoup(page_content, "html.parser")

12

13table = soup.find("table", {"class": "wikitable"})

14

15lga_trs = table.find_all("tr")[1:]

16

17for i in lga_trs:

18

19tds = i.find_all("td")

20

21td1 = tds[0].find("a")

22

23td2 = tds[1].find("a")

24

25l_name = td1.contents[0]

26

27l_url = td1["href"]

28

29l_state = td2["title"]

30

31l_state_url = td2["href"]

32

33print([l_name,l_url, l_state, l_state_url])

34

  lxml

  从这个库的名称可以看出,它与 XML 有关。实际上,它是一个解析器——一个真正的解析器,而不是像 BeautifulSoup 那样位于解析器之上的解析库。除了 XML 文件,lxml 还可以用来解析 HTML 文件。您可能有兴趣知道 lxml 是 BeautifulSoup 用于将网页文档转换为要解析的树的解析器之一。

  Lxml 解析速度非常快。但是,它很难学习和掌握。大多数网络爬虫并不是单独使用它,而是作为 BeautifulSoup 使用的解析器。所以实际上不需要代码示例,因为您不会单独使用它。

  如何安装 Lxml

  Lxml 在 Pypi 存储库中可用,因此您可以使用 pip 命令安装它。安装lxml的命令如下。

  1pip install lxml

2

  Python网页抓取框架

  与仅用于一个功能的库不同,框架是一个完整的工具,它收录了开发 Web 爬虫时需要的大量功能,包括发送 HTTP 请求和解析它们的能力。

  刮擦

  Scrapy 是最流行的,可以说是最好的网络抓取框架,作为开源工具公开提供。它是由 Scrapinghub 创建的,并且仍然被广泛管理。

  Scrapy 是一个完整的框架,因为它负责发送请求并从下载的页面解析所需的数据。Scrapy 是多线程的,是所有 Python 框架和库中最快的。它使复杂的网络爬虫的开发变得容易。但是,它的问题之一是它不呈现和执行 JavaScript,因此您需要为此使用 Selenium 或 Splash。知道它有一个陡峭的学习曲线也很重要。

  如何安装 Scrapy

  Scrapy 在 Pypi 上可用,因此您可以使用 pip 命令安装它。以下是在命令提示符/终端上运行以下载和安装 Scrapy 的命令。

  1pip install scrapy

2

  抓取代码示例

  如前所述,Scrapy 是一个完整的框架,没有简单的学习曲线。对于代码示例,您需要编写大量代码,并且不会像上面那样工作。有关 Scrapy 代码示例,请访问 Scrapy 网站 的官方教程页面。

  蜘蛛

  Pyspider 是另一个为 Python 程序员编写的 Web 抓取框架,用于开发 Web 抓取工具。Pyspider 是一个强大的网络爬虫框架,可用于为现代网络创建网络爬虫。与 Scrapy 自身不渲染 JavaScript 不同,Pyspider 擅长这项工作。然而,在可靠性和成熟度方面,Scrapy 远远领先于 Pyspider。它允许分布式架构,并提供对 Python 2 和 Python 3 的支持。它支持大量的数据库系统,并带有强大的 WebUI,用于监控爬虫/爬虫的性能。要运行它,它需要在服务器上。

  如何安装 Pyspider

  Pyspider 可以使用下面的 pip 命令安装。

  1pip install pyspider

2

  PySpider 代码示例

  下面的代码是 Pyspider 在其文档页面上提供的示例代码。它抓取 Scrapy 主页上的链接。

  1from pyspider.libs.base_handler import *

2

3class Handler(BaseHandler):

4

5crawl_config = {}

6

7@every(minutes=24 * 60)

8

9def on_start(self):

10

11self.crawl("https://scrapy.org/", callback=self.index_page)

12 

13@config(age=10 * 24 * 60 * 60)

14

15def index_page(self, response):

16

17for each in response.doc('a][href^="http"]').items():

18

19self.crawl(each.attr.href, callback=self.detail_page)

20

21 

22

23def detail_page(self, response):

24

25return {"url": response.url, "title": response.doc('title').text()

26

  如前所述,Pyspider 在服务器上运行。您的计算机充当服务器的服务器,并将从 localhost 进行侦听,因此运行:

  1pyspider

2

  命令和访问:5000/

  综上所述

  当谈到 Python 编程语言中可用于 Web 抓取的工具、库和框架的数量时,您需要知道有很多。

  但是,您无法学习其中的每一个。如果您正在开发一个不需要复杂架构的简单爬虫,那么使用 Requests 和 BeautifulSoup 的组合将起作用 - 如果该站点是 JavaScript 密集型的,则添加 Selenium。

  在这些方面,硒甚至可以单独使用。但是,当您期待开发复杂的网络爬虫或爬虫时,可以使用 Scrapy 框架。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线