1 爬虫介绍
| |
| -爬虫就是程序---> 从互联网中,各个网站上,爬取数据[你能浏览的页面才能爬],做数据清洗,入库 |
| |
| |
| |
| -模拟方式http请求, 获取数据----> 入库 |
| -网站 |
| -app:抓包 |
| |
| |
| -百度爬虫一刻不停的在互联网中爬取各个页面---> 爬取完后---> 保存到自己的数据库中 |
| -你在百度搜索框中搜索--> 百度自己的数据库查询关键字---> 返回回来 |
| - 点击某个页面----> 跳转到真正的地址上 |
| -seo: |
| -sem: 充钱的 |
| |
| |
| |
| -模拟发送http请求 |
| - requests模块 |
| - selenium |
| - 反扒 : 封ip:ip代理,封账号:cookie池 |
| -解析数据: bs4 |
| -入库: mysql, redis, 文件中 |
| |
| |
| -爬虫框架: scrapy |
2 requests 模块介绍
| |
| |
| 使用requests可以模拟浏览器的请求(http),比起之前用到的urlib,requests模块的api更加便捷(本质就是封装了urllib3) |
| |
| |
| pip3 install requests |
3 requests发送get请求
4 request携带参数
| import requests |
| |
| |
| res = requests.get('https://www.cnblogs.com/liuqingzheng/p/16005866.html?name=lqz&age=19') |
| |
| res = requests.get('https://www.cnblogs.com/liuqingzheng/p/16005866.html',params={'name':"lqz",'age':19}) |
| |
| print(res.url) |
| |
5 url编码解码
| import requests |
| from urllib.parse import quote,unquote |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| res=unquote('%E5%BD%AD%E4%BA%8E%E6%99%8F') |
| print(res) |
6 携带请求头
| |
| |
| |
| |
| -表明了客户端类型是什么:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 |
| -如果没有带这个请求头,后端就禁止 |
| -request发送请求,没有携带该参数,所以有的网站就禁止了 |
| |
| |
| import requests |
| |
| |
| |
| |
| |
| |
| |
| |
| headers = { |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36' |
| } |
| res = requests.get('https://dig.chouti.com/',headers=headers) |
| print(res.texty) |
7 发送post请求,携带数据
| import requests |
| |
| |
| headers = { |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36', |
| 'Cookie': '' |
| } |
| |
| data = { |
| 'linkId': '38063872' |
| } |
| res = requests.post('https://dig.chouti.com/link/vote',headers=headers,data=data) |
| print(res.text) |
| |
| |
8 自动登录,携带cookie的两种方式
| |
| |
| import requests |
| |
| data = { |
| 'username': '', |
| 'password': '', |
| 'captcha': '3456', |
| 'remember': 1, |
| 'ref': 'http://www.aa7a.cn/', |
| 'act': 'act_login' |
| } |
| |
| res = requests.post('http://www.aa7a.cn/user.php',data=data) |
| print(res.text) |
| |
| print(res.cookies) |
| |
| |
| |
| |
| |
| |
| res1=requests.get('http://www.aa7a.cn/',cookies=res.cookies) |
| |
| print('616564099@qq.com' in res1.text) |
9 requests.session的使用
| |
| |
| import requests |
| |
| data = { |
| 'username': '', |
| 'password': '', |
| 'captcha': '3456', |
| 'remember': 1, |
| 'ref': 'http://www.aa7a.cn/', |
| 'act': 'act_login' |
| } |
| |
| session = requests.session() |
| res = session.post('http://www.aa7a.cn/user.php',data=data) |
| print(res.text) |
| res1 = session.get('http://www.aa7a.cn/') |
| |
| print('616564099@qq.com' in res1.text) |
10 补充post请求携带数据编码格式
| import requests |
| |
| |
| requests.post(url='xxxxxxxx',data={'xxx':'yyy'}) |
| |
| requests.post(url='xxxxxxxx',json={'xxx':'yyy'}) |
| |
| requests.post(url='', |
| data={'':1,}, |
| headers={ |
| 'content-type':'application/json' |
| }) |
11 响应Response对象
| |
| import requests |
| headers = { |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36' |
| } |
| respone=requests.get('http://www.jianshu.com',headers=headers) |
| |
| print(respone.text) |
| print(respone.content) |
| |
| print(respone.status_code) |
| print(respone.headers) |
| print(respone.cookies) |
| print(respone.cookies.get_dict()) |
| print(respone.cookies.items()) |
| |
| print(respone.url) |
| print(respone.history) |
| |
| print(respone.encoding) |
| |
12 编码问题
| |
| res.text --->发现乱码---》请求回来的二进制---》转成了字符串---》默认用utf8转---》 |
| response.encoding='gbk' |
| 再打印res.text它就用gbk转码 |
13 下载图片,视频
| import requests |
| |
| |
| |
| |
| |
| |
| |
| |
| res=requests.get('https://vd3.bdstatic.com/mda-pcdcan8afhy74yuq/sc/cae_h264/1678783682675497768/mda-pcdcan8afhy74yuq.mp4') |
| with open('致命诱惑.mp4','wb') as f: |
| for line in res.iter_content(): |
| f.write(line) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构