您的位置:首页 > 编程语言 > Python开发

python requests模块和Beautiful Soup模块

2015-12-20 15:46 736 查看


requests

早就听说requests的库的强大,只是还没有接触,今天接触了一下,发现以前使用urllib,urllib2等方法真是太搓了……

这里写些简单的使用初步作为一个记录

一、安装 http://cn.python-requests.org/en/latest/user/install.html#install

二、发送无参数的get请求

?
>>> r =requests.get('http://httpbin.org/get')
>>>printr.text
{
"args": {},
"headers": {
"Accept":"*/*",
"Accept-Encoding":"gzip, deflate",
"Connection":"close",
"Host":"httpbin.org",
"User-Agent":"python-requests/2.3.0 CPython/2.6.6 Windows/7",
"X-Request-Id":"8a28bbea-55cd-460b-bda3-f3427d66b700"
},
"origin":"124.192.129.84",
"url":"http://httpbin.org/get"
}


三、发送带参数的get请求,将key与value放入一个字典中,通过params参数来传递,其作用相当于urllib.urlencode

?
>>>importrequests
>>> pqyload ={'q':'杨彦星'}
>>> r =requests.get('http://www.so.com/s',params=pqyload)
>>> r.url
u'http://www.so.com/s?q=%E6%9D%A8%E5%BD%A6%E6%98%9F'


四、发送post请求,通过data参数来传递,

?
>>> payload ={'a':'杨','b':'hello'}
>>> r =requests.post("http://httpbin.org/post", data=payload)
>>>printr.text
{
"args": {},
"data": "",
"files": {},
"form": {
"a":"\u6768",
"b":"hello"
},
"headers": {
"Accept":"*/*",
"Accept-Encoding":"gzip, deflate",
"Connection":"close",
"Content-Length":"19",
"Content-Type":"application/x-www-form-urlencoded",
"Host":"httpbin.org",
"User-Agent":"python-requests/2.3.0 CPython/2.6.6 Windows/7",
"X-Request-Id":"c81cb937-04b8-4a2d-ba32-04b5c0b3ba98"
},
"json": null,
"origin":"124.192.129.84",
"url":"http://httpbin.org/post"
}
>>>


可以看到,post参数已经传到了form里,data不光可以接受字典类型的数据,还可以接受json等格式

?
五、发送文件的post类型,这个相当于向网站上传一张图片,文档等操作,这时要使用files参数

?
5.1 定制headers,使用headers参数来传递

?
 

六、响应内容

6.1 响应状态码
r = requests.get('http://httpbin.org/get')

print r.status_code

6.2 响应头


?
也可以取到这个个别的响应头用来做一些判断,这里的参数是不区分大小写的

r.headers[‘Content-Type’]

r.headers.get(‘Content-Type’)

6.3 响应内容,前面已经在应用了

r.text

r.content

 

七、获取响应中的cookies

?
也可以自已定义请求的COOKIES

?
cookies还有很多,因为目前我也还不是很多,以后再扩充吧

八、使用timeout参数设置超时时间

>>> requests.get('http://github.com', timeout=1) 

<Response [200]>

如果将时间设置成非常小的数,如requests.get('http://github.com', timeout=0.001),那么如果在timeout的时间内没有连接,那么将会抛出一个Timeout的异常

九、访问中使用session

先初始化一个session对象,s = requests.Session() 

然后使用这个session对象来进行访问,r = s.post(url,data = user)


Beautiful Soup

from bs4 import BeautifulSoup
import requests
req = requests.get("http://www.baidu.com")
soup = BeautifulSoup(req.text,'html.parser')
print soup.find_all('a')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: