<爬虫>相关的知识
2024-10-07 20:41:45
1.概念、工具和HTTP
- 什么是爬虫
- 模拟客户端发送网络请求,获取响应,按照规则提取数据
- 爬虫的数据去哪了
- 展示到网页上(百度新闻,今日头条)
- 进行分析,从数据中寻找规律(指数网站:百度指数)
- 需要的软件和环境
- python3
- pycharm编辑器
- chrome浏览器-分析网络请求
- 浏览器的请求
- url:检查→network
- 浏览器请求url地址
- 爬虫请求url地址
- HTTP和HTTPS
- 超文本传输协议:客户端和服务端约定
- HTTPS:HTTP+SSL(安全套接字层)--更安全一点
- HTTP协议之请求
- 请求行
- 请求头
- USER-AGENT:服务器据此判断访问的是什么浏览器,
- Cookie:用来存储用户信息,每次请求会携带上发送给对方
- 请求体
- get:没有请求体,把数据放在url中
- post:登录注册,可以携带比get多很多的信息
2.requests模块的学习
- 安装
- pip install requests
- 发送get,post请求,获取响应
- response = requests.get(url)
- response = requests.post(url,data={请求体的字典})
- ②response.text:如果出现乱码,在前面加一行response.encoding = "utf-8"
- ①response.content.decode("utf-8") -----解码或者改成gbk解码
- 发送带header的请求
- headers = {"User-Agent":"xxx","Referer":"xxx",}
- response = requests.post(url,data={请求体的字典},headers= headers)
- response = requests.get(url,headers= headers)
- response.request.url
- response.request.headers
- response = requests.post(url,data={请求体的字典},headers= headers,timeout=3)---需要加异常捕获
- retrying模块学习----重试
- pip install retrying----安装
- from retrying import retry
- @retry(stop_max_attempt_number=3)-------装饰器,执行几次
- cookie相关的请求
- cookie放在headers里面
- cookie存成字典,用requests.get(url,cookies=cookie_dict)
- session = requests.session()
- session.post(url,data,headers)
- session.get(url,headers)
先发送post请求,获取cookie,带上cookie请求页面(会话维持 )
3.数据的提取方法
- json--数据交换格式
- import json
- json.loads(json字符串):json转str
- json.dumps(python字典):str转json字符串(文件写入)
- json.dumps(ret,ensure_ascII=False):数据直接显示中文,不再以ASCII码方式显示
- 主要逻辑
- start_url
- 发送请求,获得响应
- 提取数据
- 保存
- 构造下一页url地址,循环2-5步
- Xpath:提取数据
- /html/a:选择标签
- //:任意节点开始
- //div[@class="xxx"]:选择某个值
- a/@class:选择class的值
- a/text():获取a下的文本
- a//text():获取a下的所有文本
- lxml
- pip install lxml
- from lxml import etree
- element = etree.HTML("html字符串")
- element.xpath("")
最新文章
- 相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了!
- 第九回 Microsoft.Practices.Unity.Interception实现基于数据集的缓存(针对六,七,八讲的具体概念和配置的解说)
- 使用James搭建一个自己的邮箱服务器
- adb 常用命令总结
- 【BZOJ-2055】80人环游世界 上下界费用流 (无源无汇最小费用最大流)
- DllImport dll中有些啥函数 及 dll中是否用到了别的dll
- Uxf框架引入Rest控制器特性
- Linux第五次学习笔记
- 让Entity Framework支持MySql数据库(转载)
- gets和fgets函数的区别
- 「七天自制PHP框架」第二天:模型与数据库
- BZOJ 1018: [SHOI2008]堵塞的交通traffic [线段树 区间信息]
- Excel—数学函数
- hdu-1043 bfs+康拓展开hash
- 51nod1331 狭窄的通道
- [转] Java基础知识——Java语言基础
- GitHub安装教程
- Android日志工具的使用
- Linux下自动清理超过指定大小文件的方法
- 加强树状数组luogu3368
热门文章
- Linux NIO 系列(04-3) epoll
- Python升级3.多
- Codeforces 490D Chocolate
- document.createDocumentFragment()的用法
- 区别:javascript:void(0);javascript:;
- MyBatis笔记二:配置
- 案例- CSS 三角加强
- 理解EntityFramework两个核心类型的职责 DbSet和D&#39;bContext
- 第九章 Service
- secureCRT 如何上传下载文件