Python 爬虫入门:常见工具介绍

Python 爬虫入门:常见工具介绍_第1张图片

接着我的上一篇文章《网页爬虫完全指南》,这篇文章将涵盖几乎所有的 Python 网页爬取工具。我们从最基本的开始讲起,逐步涉及到当前最前沿的技术,并且对它们的利弊进行分析。

当然,我们不能全面地介绍每个工具,但这篇文章应该足以让你很好地知道哪些工具做什么,以及何时使用每一种工具。

注意: 本文中所涉及到的 Python 均指 Python3。

本文要点:

  • Web 基础
  • 手动创建一个 socket 并且发送 HTTP 请求
  • urllib3 & LXML
  • requests & BeautifulSoup
  • Scrapy(爬虫框架)
  • Selenium(浏览器自动化测试框架) & Chrome——headless
  • 总结

Web 基础

互联网其实是 非常复杂的 ——我们通过浏览器浏览一个简单的网页时,其背后其实涉及到许多技术和概念。 我并不打算对其进行逐一讲解, 但我会告诉你如果想要从网络中爬取数据需要了解哪些最重要的知识。

HyperText Transfer Protocol(超文本传输协议,简称 HTTP)

HTTP 采用 C/S 模型 , 在 HTTP 客户机(如 浏览器,Python 程序, curl(命令行工具),Requests 等等) 创建一个连接并向 HTTP 服务器(如 Nginx,Apache 等)发送信息(“我想浏览产品页”)。

然后服务器返回一个响应(如 HTML 代码)并且关闭连接。与 FTP 这些有状态协议不同,HTTP 的每个事务都是独立的,因此被称为无状态协议。

基本上,当你在浏览器中键入网站地址时,HTTP 请求如下所示:

如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!

GET /product/ HTTP/1.1
Host: example.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/web\
p,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\
/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

在这个请求的第一行, 你可以获得如下的信息:

  • 使用 Get 动词或者方法, 意味着我们从指定的路径 /product/ 请求数据。还有其他 HTTP 谓词,你可以在这里看到完整的列表。
  • HTTP 协议的版本。在本教程中,我们将重点讨论 HTTP1。
  • 多个 header 字段。

以下是最重要的 header 字段:

  • Host: 服务器的域名。如果没有给出端口号,则默认为 80* . *
  • User-Agent: 包含有关发起请求的客户端的信息, 包括 OS 等信息。比如说上面的例子中,表明了我的浏览器(Chrome),在 Mac OS X 系统上. 这个header字段很重要,因为它要么用于统计(有多少用户访问我的移动和桌面网站),要么用于防止机器人的任何违规行为。因为这些报头是由客户端发送的,所以可以使用一种名为“报头欺骗”的技术对其进行修改。这正是我们的爬虫程序要做的,使他们看起来像一个正常的网页浏览器。
  • Accept: 表明响应可接受的内容类型。有许多不同的内容类型和子类型: text/plain,text/html, image/jpeg, application/json …
  • Cookie:name1=value1; name2=value2… 这个 header 字段包含一组键值对。这些称为会话 cookie,是网站用来验证用户身份和在浏览器中存储数据的工具。比如说,当你登录时填写完账号密码并提交,服务器会检查你输入的账号密码是否正确。如果无误,它将重定向并且在你的浏览器中注入一个会话cookie,浏览器会将此cookie连同随后的每个请求一起发送给服务器。
  • Referrer : 这个字段包含请求实际URL的URL。网站通过此header字段来判断用户的来源,进而调整该用户的网站权限。例如,很多新闻网站都有付费订阅,只允许你浏览 10% 的帖子。但是,如果用户是来自像 Reddit 这样的新闻聚合器,就能浏览全部内容。网站使用 referrer 头字段来进行检查这一点。

你可能感兴趣的:(python,爬虫,开发语言)