Python3.7 爬虫:从入门到放弃(1)?

本学习记录依据逆风的蔷薇的Python3爬虫教程所写而成

Emmm. 写这篇学习记录的初衷并不是学习, 是因为当时群里有一位dalao靠爬虫进了洛谷的管理层, 就是感觉很nb. 所以来学习一个.
不排除这个系列很大概率会咕咕

第一: 了解爬虫

爬虫就像一只大蜘蛛, 你把它放到网上的一点(一个网页), 他会根据那个网页上的链接在整个互联网上游走, 同时记录下数据.
大范围爬虫会对网页产生影响, 有可能导致服务器宕机, 总之, 爬虫虽好, 也应适度.

第二: 了解网页HTTP协议(可选择跳过?)

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP的请求响应模型

HTTP协议永远都是客户端发起请求,服务器回送响应。
这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:

  1. 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
  2. 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
  3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

第三: 准备工具

  • Python 3.7
  • Fiddler 网页请求监控工具, 用来抓包?
  • Visual Studio Code 宇宙第一轻量IDE!

第四: 了解Python

这里不再赘述, 推荐几个教程吧.
廖雪峰的Python3教程
知乎: 如何系统的自学Python?
菜鸟编程: Python基础教程

第五: 流程

VSC编写.py文件->编译

第六: 第一只爬虫

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#第一个示例:简单的网页爬虫
#爬取洛谷首页
import urllib.request

#网址
url = "http://www.luogu.org/"

#请求
request = urllib.request.Request(url)

#爬取结果
response = urllib.request.urlopen(request)

data = response.read()

#设置解码方式
data = data.decode('utf-8')

#打印结果
print(data)

#打印爬取网页的各类信息

print("type(response)")
print(type(response))
print('\n')

print("response.geturl()")
print(response.geturl())
print('\n')

print("response.info()")
print(response.info())
print('\n')

print("response.getcode()")
print(response.getcode())
print('\n')

第七: 结果

这真的只是一张图片啦