初识爬虫(spider)

1. 爬虫介绍

爬虫又称网络蜘蛛、网络机器人,主要的功能就是抓取网络数据的程序。本质就是用程序模拟人使用浏览器访问网站,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。

爬虫可分为两大类:通用网络爬虫、聚焦网络爬虫。

通用网络爬虫:是搜索引擎的重要组成部分,百度搜索引擎,其实可以更形象地称之为百度蜘蛛(Baiduspider),它每天会在海量的互联网信息中爬取信息,并进行收录。当用户通过百度检索关键词时,百度首先会对用户输入的关键词进行分析,然后从收录的网页中找出相关的网页,并按照排名规则对网页进行排序,最后将排序后的结果呈现给用户。通用网络爬虫需要遵守robots协议,网站通过此协议告诉搜索引擎哪些页面可以抓取,哪些页面不允许抓取。

聚焦网络爬虫:是面向特定需求的一种网络爬虫程序。聚焦爬虫在实施网页抓取的时候会对网页内容进行筛选,尽量保证只抓取与需求相关的网页信息。这也很好地满足一些特定人群对特定领域信息的需求。

2. 网页获取流程

import socket
​
​
def handle_request(client):
    request_data = client.recv(1024)
    print("request_data: ", request_data)
    client.send(b"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n")
    client.send("

Hello, 星奕!

"
.encode("utf-8")) ​ ​ def main(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('127.0.0.1', 8800)) server_socket.listen(5)while True: connection, address = server_socket.accept() handle_request(connection) connection.close() ​ ​ if __name__ == '__main__': main()

3. URL

URL即统一资源定位符Uniform Resource Locator,每一个URL指向一个资源。可以是一个HTML页面,一个CSS文档,一个js文件、一个图片等等

URL的语法格式为:protocol://hostname[:port]/path[?query][#fragment]

http协议

百度安全验证

绝对URL和相对URL:我们上面看到的是一个绝对的URL,还有一个叫相对URL。如果URL的路径部分以“/”字符开头,则浏览器将从服务器的顶部根目录获取该资源。常出现在网页的超链接中。

  1. HTTP协议

HTTP是Hyper Text Transfer
Protocol(超文本传输协议)的缩写。HTTP协议主要的作用就是要服务器和客户端之间进行数据交互(相互传输数据)。HTTPS
(Secure Hypertext Transfer
Protocol)安全超文本传输协议,HTTPS是HTTP协议的安全版。对传输数据进行加密。

HTTP协议特点:

4.1 HTTP请求

请求行 : 具体的请求类别和请求内容

GET / HTTP/1.1 请求类别 请求内容 协议版本

请求头:对请求的进一步解释和描述

空行

请求体: 提交的内容

4.2 HTTP响应

响应行 : 反馈基本的响应情况

HTTP/1.1 200 OK 版本信息 响应码 附加信息

常见的响应状态码:

200:请求正常,服务器正常的返回数据。 301:永久重定向。
302:临时重定向。比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。
400:请求的url在服务器上找不到。换句话说就是请求url错误。 403:服务器拒绝访问,权限不够。 500:服务器内部错误。
响应头:对响应内容的描述

空行

响应体:响应的主体内容信息

  1. 编写爬虫的流程

  2. 控制台抓包

  3. request模块的安装

在CMD命令行中执行如下命令进行在线安装

pip install requests 由于网络的不稳定性有时会导致下载失败,在下载的时候我们可以加上第三方源进行下载

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

request模块安装

pip install requests -i http://pypi.douban.com/simple/
  1. requests.get()

该方法用于 GET 请求,表示向网站发起请求,获取页面响应对象。语法如下:

response = requests.get(url,headers=headers,params,timeout)

  1. HttpResponse响应对象

我们使用 Requests 模块向一个URL发起请求后会返回一个 HttpResponse响应对象。

响应对象属性:

  • text:获取响应内容字符串类型
  • content:获取到响应内容bytes类型(抓取图片、音频、视频文件)
  • encoding:查看或者指定响应字符编码
  • request.headers:查看响应对应的请求头
  • cookies:获取响应的cookie,经过了set-cookie动作;返回cookieJar类型
  • json():将json字符串类型的响应内容转换为python对象

你可能感兴趣的:(爬虫,python)