使用 python 抓取网站

Posted

技术标签:

【中文标题】使用 python 抓取网站【英文标题】:Scrape websites with python 【发布时间】:2020-09-28 22:44:00 【问题描述】:

我刚刚开始使用python。我正在尝试抓取一个网站以从中获取价格和标题。我浏览了多个教程和博客,最常见的库是美汤和scrapyMy question is that is there any way to scrape a website without using any library? 如果有一种方法可以在不使用任何第三方库(如 beautifulsoupscrapy)的情况下抓取网站。 It can use builtin libraries 请给我推荐一篇博客、文章或教程,以便我学习

【问题讨论】:

这能回答你的问题吗? Difference between BeautifulSoup and Scrapy crawler? 我想你会想引用this post。 【参考方案1】:

我认为python网络抓取中最好的、流行的、易于学习和使用的库是请求、lxml和BeautifulSoup,它们的最新版本是bs4,总而言之,“请求”让我们向网站服务器发出html请求以检索其页面上的数据。获取网页的 HTML 内容是网页抓取的第一步,也是最重要的一步。

我们来看看Requests Python库的优缺点

优点:

简单 基本/摘要式身份验证 国际域名和网址 分块请求 HTTP(S) 代理支持

缺点:

仅检索页面的静态内容 不能用于解析 HTML 无法处理纯 javascript 制作的网站

我们知道请求库无法解析从网页检索到的 HTML。因此,我们需要 lxml,这是一个高性能、极快、生产质量的 HTML 和 XML 解析 Python 库。

我们来看看lxml Python库的优缺点。

优点:

比大多数解析器都快 轻量级 使用元素树 Pythonic API

缺点:

不适用于设计不佳的 HTML 官方文档对初学者不太友好

BeautifulSoup 可能是用于网络抓取的最广泛使用的 Python 库。它创建用于解析 HTML 和 XML 文档的解析树。 Beautiful Soup 自动将传入的文档转换为 Unicode,将传出的文档自动转换为 UTF-8。

Beautiful Soup 库的一个主要优点是它可以很好地处理设计不佳的 HTML,并且具有很多功能。 Beautiful Soup 和 Requests 的结合在业界相当普遍。

优点:

需要几行代码 很棒的文档 易于初学者学习 稳健 自动编码检测

缺点:

比 lxml 慢

如果您想学习如何使用 Beautiful Soup 抓取网页,本教程适合您:

turtorial

顺便说一句,您可以尝试很多库,例如 Scrapy、Selenium Library for Web Scraping、regex 和 urllib

【讨论】:

【参考方案2】:

您可以使用urllib,而不是使用scrapy

您可以使用regex,而不是beautifulsoup

但是scrapybeautifulsoup 让您的生活更轻松。

Scrapy,不是简单的库,所以你可以使用requestsurllib

【讨论】:

你能推荐任何文章或博客吗? pythonprogramming.net/… 但我建议使用 requests + beautifulsoup

以上是关于使用 python 抓取网站的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 登录网站进行抓取

如何使用 Python 抓取需要先登录的网站

使用 Python 从网站上抓取数据 [关闭]

使用Python实现网站图片抓取

如何使用 Python 3 登录网站和抓取

如何使用python“抓取”包含弹出窗口的网站?