Request库入门
import requests
r = requests.get("http://www.baidu.com" )
r.status_code
r.text
属性 说明 r.statuscode 返回http请求状态码,200表示成功,404表示失败 r.text http响应内容的字符串形式,即url对应的页面内容 r.encoding 从http header中猜测的响应内容编码方式,获得的如果不是utf-8 可以赋值给.encoding以显示中文 r.apparent_encoding 从内容中分析出的内容编码方式,备选编码方式 r.content HTTP响应内容的二进制形式
爬取网页的通用框架
异常 说明 requests.ConnectionError
import requests
def getHtmlText (url) :
try :
r = requests.get(url,timeout = 30 )
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except :
return ("访问异常" )
if __name__ == "__main__" :
url = "http://www.baidu.com"
print (getHtmlText(url))
HTTP协议和requests库的主要方法
方法 说明 requests.request 所有方法的基础方法 requests.get requests.head r.headers展示 requests.post requests.put requests.patch requests.delete
http协议对资源的操作
方法 说明 get 请求获取URL位置的资源 head 获取url位置的头部资源 post 请求向url位置的资源后部附加新的数据 put 请求向url位置储存一个资源,覆盖原位置的资源 patch 请求局部更新URL位置的资源,即改变该处资源的部分内容 delete 请求删除url位置的资源
异常处理
修改表头:
kv = {"user-agent" : "Mozzila/5.0" }
r = requests.get(url,header = kv)
通过传递关键字爬取百度搜索的结果
import requests
keyword = input("input your searching keyword:" )
def getHtmlText (url) :
try :
kv = {"wd" : keyword}
r = requests.get(url,timeout = 30 ,params = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except :
return ("访问异常" )
if __name__ == "__main__" :
url = "http://www.baidu.com/s"
print (getHtmlText(url))
将结果保存到文件,利用r.iter_content()
with open(filename, 'wb' ) as fd:
for chunk in r.iter_content(chunk_size):
fd.write(chunk)
headers = {'user-agent' : 'my-app/0.0.1' }
r = requests.get(url, headers=headers)