目录
3.3 http请求 get post put delete (curd)增删改查
1. 网络爬虫简述
能够爬数据,获取网页数据,数据采集
2.爬虫分类:
- 通用网络爬虫(url集合,url队列,页面爬行模块,页面分析模块,页面数据库,链接过滤模块)
- 聚焦网络爬虫(有目的的爬,例如爬取租房信息)
- 增量式网络爬虫(只更新改变的数据,不更新没改变的数据,可以减少下载量与网络资源开销,增加了爬虫算法的难度)
- 深层网络爬虫(爬行控制器,解析器,表单分析器,表单处理器,)
响应分析器,lvs控制器(label value set是标签和数值的集合,用来表示填充表单的数据源)
3.网络爬虫的基本原理
1.获取初始的url,第一个要爬的入口
2.爬取特定地址的同时获取新的地址
3.将新的url放入url队列中 (list if url not in list list.append(url))
4.始终采集页面上的新url,重复上面的过程
import urllib.request # (标准库 不需要下载直接自带)from urllib import request 这个写法不对
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)
200 请求成功
301/302 重定向 通过一个网址跳到另一个网址
404找不到页面
403禁止访问 反爬
405请求方式不允许get,post
500 后台代码错误
502 网关错误
3.1 如何找headers:
3.2 cookies
存储用户登录状态()例如30天免登陆
3.3 http请求 get post put delete (curd)增删改查
- create->post insert
- update ->put update
- read->get select
- delete->delete delete
import requests
response = requests.get(url='http://www.baidu.com')
print(response.status_code) #打印状态码
print(response.url) #请求的url
print(response.headers) #打印头部信息
print(response.cookies) #打印cookies信息
print(response.text) #打印源代码
print(response.content) #以字节流打印bytes
with open('a.txt','w+') as f:
f.write( str(response.content))
西刺代理:
4.关于http协议:
http:超文本传输协议(协议:就是一种约束条件)
5.关于requests库:(python第三方模块)
如果安装了Anaconda,则自带requests库
如果正常使用Pycharm,则需要安装,命令是:pip install requests
requests库常用方法:
① get方法:用于发送get请求,返回响应对象 ☆
(1)设置headers:
(2)设置请求参数:get请求用params
(3)设置请求超时:
② post方法:同get
(1)设置请求参数:用data参数
5.1 实例1:
request爬取图片;
import requests
if __name__ == "__main__":
#爬取图片数据
url = 'https://img1.baidu.com/it/u=3692773629,2755530085&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=312'
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62'
# }
#content返回的是二进制形式的图片数据 text(返回字符串) json()是以对象的形式返回
img_data = requests.get(url=url).content
with open('./zard333.jpg','wb') as fp:
fp.write(img_data)