爬虫基础知识

一、爬虫基础知识

1.1python中request库

#request库的安装
pip install requests

request库的get()方法

image-20240118171354536

response 响应

Response对象包含服务器返回的所有信息,也包含请求的Request信息

r = requests.get( url , params=None , **kwargs )
//---url:拟获取页面的 url 链接
//---params:url 中的额外参数,字典或字节流格式,可选
//---**kwargs:12 个控制访问的参数

Response 对象的属性

属性 说明
r.status_code HTTP请求的返回状态, 200表示连接成功, 404表示失败
r.text HTTP响应内容的字符串形式,即, url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

Requests 库的 7 个主要方法

方法 说明
requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交PUT请求的方法,对应于HTTP的PATCH
requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE

状态码

  • 1XX 告知请求的处理进度和情况
  • 2XX成功
  • 3XX表示需要进一步操作
  • 4XX客户端错误
  • 5XX服务器错误

网络爬虫的尺寸

小规模,数据量小 中规模,数据规模较大 大规模,搜索引擎
爬取速度不敏感 爬取速度敏感 爬取速度关键
Requests 库 Scrapy 库 定制开发
爬取网页、玩转网页 爬取网站、爬取系列网站 爬取全网

1.2python中的json库

  • json数据是一种只包含双引号的字符串的格式。任何对象经过json的序列化单引号。
  • json表示的对象就是标准JavaScriipt语言对象,json和python内置的数据类型对应如下
JSON类型 Python类型
{} dict
[] list
"string" str
数字 int 或者float
true/false True/False
null None
import json
json.dumps(data)	#python-->json数据格式的转化
json.dump(data,filename) #将转化为的数据格式保存到filename文件中
#注意:有中文字符时会输出对应的ASCII码,而不是中文,若要输出中文则可以指定ensure_ascii=False



json.loads(data) 	#json-->python数据格式的转化

1.3xpath学习之python中的lxml

html的了解

超文本标记语言,是用来描述网页的一种语言。 主要用于控制数据的显示和外观。HTML文档一定意义上可以被称为网页。但反过来说网页不仅仅是HTML,网页本质有三部分构成:负责内容结构的HTML,负责表现的CSS,以及负责行为的javascript。本文主要分享的是最核心的内容结构部分。

html的常见标签

<a></a> #定义超链接
<h1></h1> #文本标题标签


1.4xpath

xpath定义

是一种路径查询语言,简单的说就是利用一个路径表达式从html文档中找到我们需要的数据的位置,进而将其写入本地或者数据库中。

xpath常见使用方法

符号 功能
// 表示在整个文本中查找,是一种相对路径
/ 表示则表示从根节点开始查找,是一种绝对路径
text() 找出文本值
@ 找出标签对应的属性值,比如@href就是找出对应的href链接
. 表示当前节点
.. 表示当前节点的父节点

特殊用法

  • 以相同的字符开头:starts-with(@属性部分,属性字符相同部分
  • 标签套标签:string(.)
函数 说明 举例
contains 选取属性或者文本包含某些字符 //div[contains(@id, 'data')] 选取 id 属性包含 data 的 div 元素 //div[contains(string(), '支付宝')] 选取内部文本包含“支付宝”的 div 元素
starts-with 选取属性或者文本以某些字符开头 //div[starts-with(@id, 'data')] 选取 id 属性以 data 开头的 div 元素 //div[starts-with(string(), '银联')] 选取内部文本以“银联”开头的 div 元素
ends-with 选取属性或者文本以某些字符开头 //div[ends-with(@id, 'require')] 选取 id 属性以 require 结尾的 div 元素 //div[ends-with(string(), '支付')] 选取内部文本以“支付”结尾的 div 元素
posted @ 2024-01-18 22:00  low-reed  阅读(12)  评论(0)    收藏  举报