爬虫基础回顾

1、基础知识

1.1 http的过程

先是在对应的浏览器里面输入url,通过浏览器来发送请求到目标服务器(url指向的服务器),目标服务会根据请求,发送回响应给浏览器,浏览器对相应进行解析。

1.1.1 请求

(1)请求方式:get()/post()

(2)请求url:url有参数,一般是在‘?’后面的是参数,有多个参数的话,通过‘&’连接起来

(3)请求头:User-Agent:最基本的反爬;Cookies:记录Session、账号以及密码等;Cotent-type:区分不同的文件信息,post请求一般会添加

(4)请求体:getq请求没有请求体,只有post请求有请求体。

1.1.2 响应

(1) 状态码:200(请求成功),3**(重定向),404(Not Found),500(Server内部错误)

(2) 响应头:set_cookies里面会包含登录后的账号密码信息

(3) 响应体:最主要的内容信息。html文件:正则表达式、BeatifulSoup、pyquery、lxml;json:json.loads();二进制的文件:保存为对应的格式

 

1.2 爬虫的基本概念

爬虫就是模拟浏览器获取响应,针对响应提取信息,并对提取的信息进行保存的自动化程序

(1)获取响应:通过伪装请求,来获取响应:urllib、requests、selenium(渲染库)

(2)提取信息:就是对响应体进行解析:html文件:正则表达式、BeatifulSoup、pyquery、lxml;json:json.loads();二进制的文件:保存为对应的格式

(3)保存数据:保存成文件、保存到数据库(MySQL、MongoDB)。

 

2、urllib(请求库)

2.1 urllib.request:进行请求

#如果data=None,就是get请求;data不为None,必须输入的是字节流(可以借助urlencode()进行转化)

(1)response=urllib.request.urlopen(url,data=None,timeout)#返回的是HTTPResponse对象

(2)urllib.request.Request(url,data=None,headers={},method='GET')#通过构建Request对象,可以构建请求的四大部分

(3)响应:

response.status#响应状态码

response.getheaders()#获取所有的响应头信息

response.getheader(name)

response.read()#获取响应的信息,返回的二进制,可以和配合decode进行编码

 

2.2 urllib.error#异常处理

urllib.error.URLError#总的异常,返回的是reason

urllib.error.HTTPError#http方面的异常,返回reason/code/headers

 

2.3 urllib.parse#解析url,或者url编码

urllib.parse.urlencode({})#可以对字典进行url编码,字典的各个部分自动通过‘&’拼接起来,返回的是字符串

urllib.parse.quote()#针对字符串进行url编码

urllib.parse.unquote()#quote()的逆方法

 

3.requests(请求库)

3.1 请求方式

requests.get()

requests.post()

 

3.2 requests.get()

response=requests.get(url,params={},headers={},timeout,cookies=RequestsCookieJar,proxies={})

#params:url的参数,字典形式

#headers:请求头,字典形式

#timeout:超时设置

#cookies:直接传入requests.cookies.RequestsCookieJar实例化对象

#proxies:代理,字典形式

 

3.3 响应

response.text#返回的字符串形式的响应体

response.content#返回的是二进制的响应体

response.json()#针对json格式的响应体,返回字典形式

 

response.status_code#返回状态码

response.headers#返回响应头

response.cookies#返回requests.cookies.RequestsCookieJar对象

requests.utils.dict_from_cookiejar(r.cookies)#将RequestsCookieJar对象转化为字典形式

 

3.4 requests.post()

response=requests.get(url,params={},headers={},data={},timeout,cookies=RequestsCookieJar,proxies={})

#data:请求体,字典形式

 

3.5 异常

requests.exceptions.RequestException #最高级的别的异常

requests.exceptions.HTTPError #HTTP方面的异常

requests.exceptions.ConnectError #连接方面的异常

requests.exceptions.Timeout#超时异常

 

 

4.正则表达式

4.1.常用的规则

\d:数字,等价于[0-9],\D

\s:空格,等价[\r\n\t],\S

[]:可以匹配中括号里面的任意字符

[^]:取反

.:除换行符以外的任意字符

*:前面符号的0个或者多个

+:前面符号的1个或者多个

?:非贪婪模式

():添加组,也用来做目标匹配

.*:贪婪模式,除换行符以外的任意字符串

.*?:非贪婪模式,除换行符以外的任意字符串

\:转义字符

 

4.2. re.match

re.match(r'',html,re.S|re.I)#只能从头开始匹配

#修饰符

re.S:指的是‘.’也可以指代换行符

re.I:匹配时,对大小写不敏感

 

4.3. re.search

re.search(r'',html,re.S|re.I)#可以从任意位置开始匹配,但是只返回匹配第一个字符串

 

4.4. re.findall

re.findall(r'',html,re.S|re.I)#返回所有与之匹配结果,返回的是列表形式

 

4.5. re.sub

re.sub(r'','',html,re.S)#替换

 

4.6. re.compile

re.compile(r'',re.S)#用来编译正则表达式,便于复用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值