爬虫入门

re模块代码结构

import re
res="""
max maxl max2
max
"""
ret=re.findall('m.*?x',res)
print(ret)

 

  返回的是一个列表,内部包含了正则匹配到的所有数据

因为是全局匹配所以 不会匹配到一个相符的就停止

import re
res="""
max maxl max2
max
"""
ret=re.finditer('m.*x',res)
for i in ret:
    print(i)

 

  返回的是个迭代器比直接返回数据更加节省内存

只有主动添加.group才能索要数据

 

import re
res="""
max maxl max2
max
"""
ret=re.search('m.*?x',res)
print(ret)

  只会匹配到一个符合结果的数据就结束

import re
res="""
max maxl max2
max
"""
ret=re.match('m.*?x',res)
print(ret)

 

从头开始匹配 一旦第一个条件不匹配立马就停止

import re
ret = re.findall('www.(oldboy).com', 'www.oldboy.com')
print(ret)

 

  使用findall 内部加括号时 会优先匹配括号内的内容

ret1 = re.findall('www.(?:oldboy).com', 'www.oldboy.com')
print(ret1)

可以使用?:取消优先匹配 其实和不加任何东西效果是一样的

 

爬虫模块之requests

模拟浏览器向网络请求获取数据

requests 是第三方模块点击下方terminal 

  输入 pip3 install requests -i  http://mirrors.aliyun.com/pypi/simple/ #通过换国内数据源提升下载速度

  网络请求方法

get请求(朝服务器请求数据)

 

 输入网址按回车就是在向百度服务器发送get请求索要首页

get请求也可以携带额外的条件数据,但是数据只有2-4kb并且直接写在网址后面

url?xxx=yyy&zzz=mmm

 

 post请求(朝服务端发送数据)

朝别人提交数据

 post请求也可以携带额外的数据 并且数据大小没有限制 敏感性的数据都是由post请求携带

HTTP协议

1.四大特性

1.基于请求响应(只有请求才会有相应)
2.基于TCP、IP作用于应用层之上的协议
3.无状态(数据响应完成之后服务端不会记住任何浏览器)
不保存客户端的状态
4.无连接 

2.数据请求格式

请求首行 (请求方法,地址)

请求头(一堆k:v键值对)

 

请求体(get中没有)

响应首行(协议版本,状态码)

响应头(一堆k:v键值对)

 

响应体(浏览器展示给用户看的数据)

 3.响应状态码

1xx:请求成功,服务器正在处理 继续上传或者等待

2xx:200ok 成功请求

3xx:重定向(原本要打开a页面 点击之后却打开了b页面)

4xx:403 请求不符合条件 404 找不到资源

5xx:服务器内部问题

requests模块基本使用

import requests
requests.get(url) # 发送get请求
requests.post(url) # 发送post请求
    import requests
    # 朝百度发送get请求获取首页数据
    res = requests.get('https://www.baidu.com/')
    # print(res.status_code)  # 获取响应状态码
    # 指定字符编码
    # res.encoding = 'utf8'
    # print(res.text)  # 获取网页字符串数据
    # print(res.content)  # 获取bytes类型的数据(在python中可以直接看成是二进制)
    with open(r'baidu.html', 'wb') as f:
        f.write(res.content)

    

 print(res.status_code) # 获取响应状态码

 

   

 
res.encoding='utf8' # 转码
print(res.text) # 获取网页字符串数据

  需要转码~  

print(res.content)  # 获取bytes类型的数据(在python中可以直接看成是二进制)

  

 

  携带参数的get请求

    requests.get(url,params={})

 

 

但是网页并不能打开

防爬措施

 用于校验当前请求是否是浏览器发出的

 

 

 

 即可将自己伪装成浏览器访问页面 完成访问

 

   

posted @ 2021-09-15 14:27  查无此人cxc  阅读(30)  评论(0编辑  收藏  举报