比urllib更为强大的requests的一些使用技巧
来源:互联网 发布:淘宝卖家中心怎么找 编辑:程序博客网 时间:2024/05/21 11:27
coding = utf-8
import requests
import re
”’
那么GET请求,如果要附加额外的信息一般是怎样来添加?没错,那就是直接当做参数添
加到url后面。
比如现在我想添加两个参数,名字name是germey,年龄age是22。构造这个请求链接是不
是我们要直接写成r = requests.get(“http://httpbin.org/get?name=germey&age=22“)?
可以是可以,但是不觉得很不人性化吗?一般的这种信息数据我们会用字典{“name”: “ge
rmey”, “age”: 22}来存储,那么怎样来构造这个链接呢?
同样很简单,利用params这个参数就好了。
data = {‘name’:’germey’,’age’:22}
r = requests.get(‘http://httpbin.org/get‘,params=data)
print(r.text)
”’
”’
网页的返回类型实际上是str类型,但是它很特殊,是Json的格式,所以如果我们想直接
把返回结果解析,得到一个字典dict格式的话,可以直接调用json()方法。
r = requests.get(‘http://httpbin.org/get‘)
print(type(r.text))
print(r.json())
print(type(r.json))
”’
”’
如上的请求链接返回的是Json形式的字符串,那么如果我们请求普通的网页,那么肯定
就能获得相应的内容了。
下面我们以知乎-发现页面为例来体验一下:
headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36’}
r = requests.get(“https://www.zhihu.com/explore“, headers=headers)
pattern = re.compile(‘explore-feed.?question_link.?>(.*?)’, re.S)
titles = re.findall(pattern,r.text)
print(titles)
”’
”’
抓取二进制数据
r = requests.get(‘https://github.com/favicon.ico‘)
with open(‘favicon.ico’,’wb’) as f:
f.write(r.content)
f.close()
在这里用了open()函数,第一个参数是文件名称,第二个参数代表以二进制写的形式打开,
可以向文件里写入二进制数据,然后保存。
运行结束之后,可以发现在文件夹中出现了名为favicon.ico的图标。
同样的,音频、视频文件也可以用这种方法获取。
”’
”’
设置代理:
对于某些网站,在测试的时候请求几次,能正常获取内容。但是一旦开始大规模爬取,对于大规模且频繁的请求,网站可能会直接登录验证,验证码,甚至直接把IP给封禁掉。+
那么为了防止这种情况的发生,我们就需要设置代理来解决这个问题,需要用到proxies这个参数。
用这样的方式设置:
import requests
proxies = {
“http”: “http://10.10.1.10:3128“,
“https”: “http://10.10.1.10:1080“,
}
requests.get(“https://www.taobao.com“, proxies=proxies)
”’
- 比urllib更为强大的requests的一些使用技巧
- python3---->比urllib更为强大的requests
- 比urllib好用的requests
- urllib与requests的对比
- python2.7 httplib, urllib, urllib2, requests 库的简单使用
- Python 使用 requests、urllib 完成代理服务器的设置
- python的http请求模块urllib+requests
- 使用 /sys 文件系统访问 Linux 内核:比/proc 更为理想的访问内核数据的途径
- 使用 /sys 文件系统访问 Linux 内核:比/proc 更为理想的访问内核数据的途径
- 强大的Vim使用技巧
- 要想走向比目前更为理想的境况
- 比奶业地震更为恐怖的葡萄酒业!
- java中获取比毫秒更为精确的时间
- Java中获取比毫秒更为精确的时间
- java中获取比毫秒更为精确的时间
- requests包的简单运用 代替urllib/urllib2
- urllib 与 requests 分别搭配 beautifulsoup 的不同写法
- urllib/urllib2的使用
- 默认初始ViewPager切换到指定页面不需要滑动过程
- AndroidStudio Toolbar 滑动隐藏以及返回按钮点击事件
- 键入任意整数,将之从小到大输出
- 基于C++的OPC自定义同步数据访问技术
- [YTU]_1063 (输入三个整数,按由小到大的顺序输出)
- 比urllib更为强大的requests的一些使用技巧
- Git的常用使用
- 解读WEB工程下的web.xml配置文件
- 绝不能被忽视的 UI 设计技巧
- 封装ViewPager适配器简单封装
- 文件下载,文件名有中文及空格无法显示问题
- [YTU]_1064 (输入三个字符串,按由小到大的顺序输出)
- SpringMVC原理
- Win2008系统创建DHCP服务器