爬虫又称网络蜘蛛、网络机器人,主要的功能就是抓取网络数据的程序。本质就是用程序模拟人使用浏览器访问网站,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。
爬虫可分为两大类:通用网络爬虫、聚焦网络爬虫。
通用网络爬虫:是搜索引擎的重要组成部分,百度搜索引擎,其实可以更形象地称之为百度蜘蛛(Baiduspider),它每天会在海量的互联网信息中爬取信息,并进行收录。当用户通过百度检索关键词时,百度首先会对用户输入的关键词进行分析,然后从收录的网页中找出相关的网页,并按照排名规则对网页进行排序,最后将排序后的结果呈现给用户。通用网络爬虫需要遵守robots协议,网站通过此协议告诉搜索引擎哪些页面可以抓取,哪些页面不允许抓取。
聚焦网络爬虫:是面向特定需求的一种网络爬虫程序。聚焦爬虫在实施网页抓取的时候会对网页内容进行筛选,尽量保证只抓取与需求相关的网页信息。这也很好地满足一些特定人群对特定领域信息的需求。
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()
URL即统一资源定位符Uniform Resource Locator,每一个URL指向一个资源。可以是一个HTML页面,一个CSS文档,一个js文件、一个图片等等
URL的语法格式为:protocol://hostname[:port]/path[?query][#fragment]
http协议
百度安全验证
绝对URL和相对URL:我们上面看到的是一个绝对的URL,还有一个叫相对URL。如果URL的路径部分以“/”字符开头,则浏览器将从服务器的顶部根目录获取该资源。常出现在网页的超链接中。
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:服务器内部错误。
响应头:对响应内容的描述
空行
响应体:响应的主体内容信息
编写爬虫的流程
控制台抓包
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/
该方法用于 GET 请求,表示向网站发起请求,获取页面响应对象。语法如下:
response = requests.get(url,headers=headers,params,timeout)
我们使用 Requests 模块向一个URL发起请求后会返回一个 HttpResponse响应对象。
响应对象属性:
- text:获取响应内容字符串类型
- content:获取到响应内容bytes类型(抓取图片、音频、视频文件)
- encoding:查看或者指定响应字符编码
- request.headers:查看响应对应的请求头
- cookies:获取响应的cookie,经过了set-cookie动作;返回
cookieJar
类型json()
:将json
字符串类型的响应内容转换为python对象