初识爬虫(spider)

文章介绍了爬虫的基本概念,包括通用网络爬虫和聚焦网络爬虫的差异,以及网页获取流程。同时,详细阐述了URL的结构和HTTP协议的工作原理,如HTTP请求和响应的组成。此外,还提到了HTTP状态码的重要性和requests模块在Python中的使用,用于发送HTTP请求。
摘要由CSDN通过智能技术生成

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("<h1 style='color:red'>Hello, 星奕! </h1>".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对象

网络爬虫程序   什么是网络爬虫(Spider)程序   Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web 文档集合的程序。它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,然后以文档中包括的所有未访问过的URL作为新的起点,继续进行漫游,直到没有满足条件的新URL为止。WebCrawler的主要功能是自动从Internet上的各Web 站点抓取Web文档并从该Web文档中提取一些信息来描述该Web文档,为搜索引擎站点的数据库服务器追加和更新数据提供原始数据,这些数据包括标题、长度、文件建立时间、HTML文件中的各种链接数目等   1. 搜索策略   ① IP 地址搜索策略   先赋予爬虫一个起始的IP地址,然后根据IP地址递增的方式搜索本IP地址段后的每一个WWW 地址中的文档,它完全不考虑各文档中指向其它Web 站点的超级链接地址。优点是搜索全面,能够发现那些没被其它文档引用的新文档的信息源;缺点是不适合大规模搜索。   ② 深度优先搜索策略   深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其他超链可选择时,说明搜索已经结束。优点是能遍历一个Web 站点或深层嵌套的文档集合;缺点是因为Web结构相当深,,有可能造成一旦进去,再也出不来的情况发生。   ③ 宽度优先搜索策略   在宽度优先搜索中,先搜索完一个Web 页面中所有的超级链接,然后再继续搜索下一层, 直到底层为止。例如,一个HTML 文件中有三个超链,选择其中之一并处理相应的HTML文件,然后不再选择第二个HTML文件中的任何超链, 而是返回并选择第二个超链,处理相应的HTML文件,再返回,选择第三个超链并处理相应的HTML文件。一旦一层上的所有超链都己被选择过,就可以开始在刚才处理过的HIML 文件中搜索其余的超链。这就保证了对浅层的首先处理。当遇到一个无穷尽的深层分支时,不会导致陷进WWW 中的深层文档中出现出不来的情况发生。宽度优先搜索策略还有一个优点,即它能在两个HTML文件之间找到最短路径。宽度优先搜索策略通常是实现爬虫的最佳策略,因为它容易实现,而且具备大多数期望的功能。但是如果要遍历一个指定的站点或者深层嵌套的HTML文件集,用宽度优先搜索策略则需要花费比较长的时间才能到达深层的HTML文件。综合考虑以上几种策略和国内信息导航系统搜索信息的特点,国内一般采用以宽度优先搜索策略为主、线性搜索策略为辅的搜索策略。对于某些不被引用的或很少被引用的HTML文件,宽度优先搜索策略可能会遗漏这些孤立的信息源,可以用线性搜索策略作为它的补充。   ④ 专业搜索引擎的爬虫策略   目前,专业搜索引擎网络爬虫通常采用“最好优先”原则访问WEB,即为快速、有效地获得更多的与主题相关的页面(简称“回报”),每次选择“最有价值”的链接进行访问。由于链接包含于页面之中,而通常具有较高价值的页面包含的链接也具有较高的价值,因而对链接价值的评价有时也转换为对页面价值的评价。   ⑤ 爬虫的设计中应该注意的问题   第一个问题是URL地址的标准化:在WWW上,一个URL地址可以有多种表示方法,可以用IP 地址表示,也可以用域名来表示。为了避免爬虫重复访问同一地址。第二个问题是避免掉进网络陷阱:网络上的链接情况比较复杂,一些静态的网页可能构成闭环回路。为了避免爬虫在一条循环路线上反复抓取,在把URL加入待搜索地址列表之前都要检查是否已在待搜索的地址列表中出现过。对于动态网页,爬虫应该忽略所有带参数的URL。第三个问题:对于拒绝访问的页面,爬虫应该遵从“漫游拒绝访问规则”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值