爬虫基础
爬虫定义
模拟浏览器向后端发送请求,获取数据,解析并且获得我想要的数据,然后存储:
发送请求--获取数据--解析数据--存储数据
http协议里需要关注的
请求:
URL:指明了我要去哪里
method:
GET:传递数据:?&拼在URL后面
POST:请求体(formdata、files、json)
请求头:
Cookie:用于身份验证
Referer:告诉服务器从哪里来
User-Agent:告诉服务器你的身份
响应:
Status Code:
2xx:成功
3xx:重定向
响应头:
location:跳转地址
set_cookie:设置cookie
响应体:
1.html代码
2.二进制:图片,视频,音乐
3.json格式
常用请求库、解析库、数据库的用法
请求库
requests库
安装:pip install requests
请求:
get请求:
响应对象 = requests.get(...)
参数:
url:请求路径
headers = {} 优先级高于cookie
cookies = {}
params = {} 参数
proxies = {'http':'http://端口:ip'} 代理
timeout = 0.5 超时时间(秒级)
allow_redirects = False 不允许重定向
post请求:
响应对象 = requests.post(...)
参数:
url:请求地址
headers = {}
cookies = {}
data = {}
json = {}
files = {'files':open('文件名','rb')}
timeout = 0.5
allow_redirects = False
自动保存cookie的请求:
session = request.session()
r = session.get(...)
r = sesison.post(...)
补充:(保存cookie到本地)
import http:cookiejar as cookielib
session.cookies = cookielib.LWPCookieJar()
session.cookies.save(filename='文件名') 保存
session.cookies.load(filename='文件名') 解析
响应:
r.url:路劲
r.text:文本内容
r.encoding:编码
r.content:二进制
r.json():转json格式
r.status_code:状态码
r.headers:请求头
r.cookies
r.history:重定向之前的路径
常用解析语句
css选择器
1.类选择器:
.类 {}
2.id选择器:
#id {}
3.标签选择器:
标签 {}
4.后代选择器:
标签 标签 {}
5.子选择器:
标签>标签
6.属性选择器
[属性] {} 所有属性
[属性=值1] 所有属性值等于值1
[属性^=值] 属性以值开头
[属性$=值] 属性以值结尾
[属性*=值] 包含值
7.群组选择器
标签1,标签2... or
8.多条件选择器
标签1标签2... and
requests-html
安装:pip install requests-html
请求:
from requests_html import HTMLSession
session = HTMLSession()
参数:
browser.args = [
'--no-sand',
'--user-agent = xxxxx'
]
响应对象 = session.request(...,method='')
响应对象 = session.get(...)
响应对象 = session.post(...)
响应、参数跟requests模块一样
解析
html对象属性
r.html.absolute_links 绝对链接(http开头的)/将相对改成绝对/去重
r.html.links 原样链接
r.html.base_url 基础链接
r.html.html 原html文件
r.html.text 获取页面上所有的文本内容
r.html.encoding 解码格式
r.html.raw_html 原生html(二进制数据流)
r.pq pyquery对象