requests基础理解

这是常用的爬虫库,可以实现从浏览器爬取信息,还可给浏览器发送信息。
这儿主要讲解,requests.get、requests.post、requests.session,这三个方法

状态码

爬取浏览器常常会出错,这是因为有的浏览器有反扒机制,所以状态码就是反应是否爬取成功的标志,状态码有很过,可以搜索了解下,这儿列举常见的。
200——爬取成功
404——爬取失败,大概率是反扒机制发挥作用,可以尝试等待一段时间在爬取。

cookies

用于保持用户数据连接的密码,在浏览器中右击——检查——网络——刷新页面——出现一列表——点击第一个——标头——请求标头——cookies。
一堆字符,就是连接密码。
作用是让服务器识别到是真正的用户。
否则下次打开新网页,还得重新登录,

请求头——head

服务器根据请求头判断是正常浏览,还是爬虫获取,head中’user-agent‘的获取,输入网址http://httpbin.org/get,找到对应的’user-agent‘,复制到head中即可

http://httpbin.org

这个网页是特殊网页,给发发送任何信息,他都会保存并原样返回,结构简单可以看到网页的关键信息。
比如,输如http://httpbin.org/get

{"args": {}, "headers": {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Host": "httpbin.org", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-60442e43-0f972092395286fa17a052b6"}, "origin": "183.200.91.192", "url": "http://httpbin.org/get"
}

user-agent表示用户信息,想浏览器发送这台计算机的基本信息。
http://httpbin.org/post这个网址在浏览器中是打不开的,但是在程序中写,是可以使用,功能是发送信息。

requests.post

向浏览器发送信息后,信息保存在浏览器中,对应信息保存在对应的地方。
发送data = ‘hello world’
浏览器中的data = hello world
发送键值对{‘name’:‘changjiang’,‘password’:‘11520’}
浏览器中form中保存了键值对的信息
发送文件(图片或文本)
浏览器中file中保存
注意:发送图片,必须以二进制打开

import requests
data = 'hello world'
#提交表单信息,写成键值对的形式
# data = {'name':'changjiang','password':'11520'}
r = requests.post('http://httpbin.org/post',data = data)#一般只能向浏览器查询信息,这儿的post可以向浏览器发送信息
print(r.status_code)#一定打印状态码,确定是连接成功,确定后面的信息是有效的
print(r.text)#文件上传
fp = {'file':open('123.txt','r')}#罕见,键值对,是一个方法的形式,
r = requests.post('http://httpbin.org/post',files = fp)
print(r.status_code)
print(r.text)

requests.get

这儿写一个爬取百度首页的例子,需要注意的是,爬取下来的是看不懂的乱码,这是因为编码方式不同,改为“utf-8”则可以看懂

import requests
import re
r = requests.get('http://www.baidu.com')#爬取百度首页
print(r.status_code)#返回状态码
print(r.text)
r.encoding = 'utf-8'#改编码方式
print(r.text)#这时输出结果可以看懂,有汉字,有网页
result = re.findall('http\S+>',r.text)#对爬取内容正则表达搜索,爬取特定内容
print(result)

requests.session——会话维持

主要解决登陆账户后,再次打开新页面时,需要再次登陆用户信息的问题,并且在爬虫过程中代码实现解决。

import requests
输入"http://httpbin.org/cookies/set/number/123456789",即给网页发送一个cookies,下次会保存,即下次输入“httpbin.org/cookies”,也会出现12456789
r = requests.get('http://httpbin.org/cookies/set/number/123456789')
print(r.text)
r = requests.get('http://httpbin.org/cookies')
print(r.text)#不显示123456789
#浏览器可以保留cookies,但是爬虫不保留,需要手动,即session()s = requests.session()#注意写法
r = s.get('http://httpbin.org/cookies/set/number/123456789')
print(r.text)
r = s.get('http://httpbin.org/cookies')
print(r.text)#也显示123456789
#这时,实现了会话维持,两次都可以得到12456789

代码实现百度搜索

head键值对,保存登录百度账号后的cookies,再保存user-agent的计算机信息,这样head就做好了,可以骗过服务器,把所需要的信息获取下来。

搜索关键字程序中输入,有两种方法,

  • 一是‘https://www.baidu.com/s?w=pytnon’,字符串输入,’?w=‘是关键字
  • 二是’https://www.baidu.com/s’,params = info,info是键值对,键值对中输入info = {‘w’:‘廉旭刚’},‘w’是固定的

也可以实现360搜索,‘http://www.so.com/s?q = python’

import requests
head = {'cookie':'BAIDUID_BFESS=1976557631749D0EBC106A78E97B70D3:FG=1; Hm_lvt_aec699bb6442ba076c8981c6dc490771=1609683659; COOKIE_SESSION=17735072_1_8_4_20_10_0_0_8_3_0_3_17734990_0_147_157_1609683659_1609683649_1609683806%7C9%2321793484_16_1609683806%7C4; PSTM=1582606327; BIDUPSID=0F7927EC5A982CDB739710CB60D96E35; H_BDCLCKID_SF_BFESS=tJA8oDLKtDI3D-Lk5tvEMPLS-fFX5-RLf5bi5l7F54nKDp0R0Tth3bDrhn6qLRbXQC6MahkM5h7xsMTsQq75QUCbKh0DbPRdQDv4obnN3KJmfb7lj4TIBPDUDGbe2-biWbRM2MbdJqvP_IoG2Mn8M4bb3qOpBtQmJeTxoUJ25DnJhhCGe6K5ejjBjGK8q-7qHjTQBRvHKbjVKROvhjRaQjkgyxoObtRxtaAf_xb-LnAMqM56hloHbUPUDMJ9LU3kBgTvQh3kMPJ2htJvBpjJQjtJQttjQn3y-RcX5f7tWK_5qn7TyU42bU47yaji0q4Hb6b9BJcjfU5MSlcNLTjpQT8r5MDOK5OuJRLHoK8XfCDWbKvGh4rohCuShMr2aK6B5Po2WbCQ3R5O8pcNLTDK5J8HQbKtbqOyJe7PLbrGKx5ZEqQphpO1j4_eM4n4bjQABgcWLUJ1tx3Cjh5jDh3oXjksD-Rt5jjK2aQy0hvcMR5cShnGqfjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2b6Qh-p52f6_HfnKH3f; BDSFRCVID_BFESS=EekOJeC62upnDR5rPo6CUwnUaUYAFaoTH6aojOEr5ILFktPL1WRhEG0PoM8g0Kub2akZogKKyeOTHu-F_2uxOjjg8UtVJeC6EG0Ptf8g0f5; BDUSS=1EtQzZWRGpwNzNLfkc5VXJPY1RFRmVjZHU5clI1MU9XZ2Z5YlBYcEpoNWVsbHhnRVFBQUFBJCQAAAAAAAAAAAEAAACP112vyb25pNS6ytPGtb76AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4JNWBeCTVgS; BDUSS_BFESS=1EtQzZWRGpwNzNLfkc5VXJPY1RFRmVjZHU5clI1MU9XZ2Z5YlBYcEpoNWVsbHhnRVFBQUFBJCQAAAAAAAAAAAEAAACP112vyb25pNS6ytPGtb76AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4JNWBeCTVgS; BD_UPN=12314753; BDRCVFR[k2U9xfnuVt6]=mk3SLVN4HKm; BD_HOME=1; delPer=0; BD_CK_SAM=1; PSINO=1; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; ispeed_lsm=6; H_PS_PSSID=33356_33344_31253_33594_26350; sug=3; sugstore=1; ORIGIN=0; bdime=0; BA_HECTOR=a120a1048lagag04tc1g478k50r',"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45"}
#只要我把cookie复制下来,我就可以随意爬取百度的搜索内容,比如:s?w=c++# r = requests.get('https://www.baidu.com/s?w=pytnon',headers = head)
info = {'w':'廉旭刚'}#也可以写成键值对的形式
r = requests.get('https://www.baidu.com/s',params = info,headers = head)
print(r.status_code)
fp = open('e.html','wb')
fp.write(r.content)
fp.close()

python第三方库——requests相关推荐

  1. Linux离线安装Python第三方库Requests

    前言:因为公司服务器不能上外网,所以执行Python脚本需要自行配置,如用到第三方库,也要自行安装.由于这个系统镜像缺少很多基础依赖,导致各种apt install都无法安装,只能源码安装插件.不管如 ...

  2. python第三方库Requests的基本使用

    Requests 是用python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  3. python使用osgeo库_Python使用内置urllib模块或第三方库requests访问网络资源

    前言 更多内容,请访问我的 个人博客. Python 访问网络资源有很多方法,urllib, urllib2, urllib3, httplib, httplib2, requests ,现介绍如下两 ...

  4. Python的第三方库requests

    Python的标准库是随着Python安装的时候默认自带的库:Python的第三方库,需要下载后安装到Python的安装目录下.不同的第三方库安装及使用方法不同,Python第三方库的查询地址为:ht ...

  5. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  6. dos系统不能安装python模块,无法使用pip命令安装python第三方库的原因及解决方法...

    再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的scripts文件夹里面.我们可以把dos切换到对应的文件夹,再使用pip命令就可以了. 如果 ...

  7. Python_note8 程序设计方法学+Python第三方库安装+os库

    实例13 体育竞技分析 自顶向下,解决复杂问题的有效方法,将一个小问题表达为若干小问题组成的形式,使用同样方法进一步解决小问题直至可以用计算机简单解决:自底向上 理解自顶向下的设计思维:分而治之:理解 ...

  8. python中安装一个第三方库的命令格式是-无法使用pip命令安装python第三方库的彻底解决方案...

    无法使用pip命令安装python第三方库的原因及解决方法 再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的Scripts文件夹里面.我们可以 ...

  9. python第三方库下载-3、python第三方库的安装方式

    前言:在学习Python过程中,经常要用到很多第三方库,面对各种不同情况,Python为我们提供了多种安装方法,这里主要介绍三种方法:pycharm在线安装.pip在线安装(强烈推荐).离线安装. 方 ...

最新文章

  1. 使用Python,OpenCV构建透明的叠加层
  2. linux 用户管理(3)----查看用户登录时间以及命令历史
  3. 基于openstack的私有云构建_阿里云杨敬宇:四层技术构建基于城市场景的边缘计算...
  4. Entity Framework返回IEnumerable还是IQueryable?
  5. Linux System Programming --Chapter Three
  6. commons-io_从Commons CLI迁移到picocli
  7. 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用
  8. 动态规划算法--矩形最小路径和
  9. Java建造圆判断是否在园内_java – 查找一个圆圈是否在另一个圆圈内
  10. 家长对孩子的期望 from father
  11. sql decimal函数例子_leetcode题库-sql练习精讲系列--三、经典排名问题
  12. OIL + VCache如何改善Facebook视频延迟 并减少存储和计算开销?
  13. python文件打不开 环境变量错误_【图片】[求助]cmd用环境变量突然打不开文件【python吧】_百度贴吧...
  14. 初学SpringMVC,使用MVC进行文件上传
  15. webpack钩子调用shell笔记
  16. 加快Linux上yum下载安装包的速度(以CentOS 7,安装gcc为例)
  17. 国外程序员薪资曝光,美国最高,均年薪95879美元
  18. 一台电脑两种jdk_同一个电脑安装两个jdk版本
  19. NS3:FlowMonitor设计讲解
  20. 毕设题目:Matlab身份证识别

热门文章

  1. sql面试题sql语句_第二轮SQL面试问题
  2. 如何使用PowerShell保护密码
  3. WPF 凭证分录控件
  4. 【C#复习总结】细说表达式树
  5. python爬虫系列:做一个简单的动态代理池
  6. input checkbox 选择内容输出多少个
  7. python 魔法方法
  8. 可达龙博客的第一篇文
  9. 运营商缺的是应用还是想法--广州晨皓
  10. Jdbc -Statement