【问题标题】:Scrape websites with python使用 python 抓取网站
【发布时间】:2020-09-28 22:44:00
【问题描述】:
我刚刚开始使用python。我正在尝试抓取一个网站以从中获取价格和标题。我浏览了多个教程和博客,最常见的库是美汤和scrapy。 My question is that is there any way to scrape a website without using any library?
如果有一种方法可以在不使用任何第三方库(如 beautifulsoup 和 scrapy)的情况下抓取网站。 It can use builtin libraries
请给我推荐一篇博客、文章或教程,以便我学习
【问题讨论】:
标签:
python
web-scraping
beautifulsoup
scrapy
libraries
【解决方案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 的结合在业界相当普遍。
优点:
- 需要几行代码
- 很棒的文档
- 易于初学者学习
- 稳健
- 自动编码检测
缺点:
如果您想学习如何使用 Beautiful Soup 抓取网页,本教程适合您:
turtorial
顺便说一句,您可以尝试很多库,例如 Scrapy、Selenium Library for Web Scraping、regex 和 urllib
【解决方案2】:
您可以使用urllib,而不是使用scrapy。
您可以使用regex,而不是beautifulsoup。
但是scrapy 和beautifulsoup 让您的生活更轻松。
Scrapy,不是简单的库,所以你可以使用requests 或urllib。