Python网络爬虫与信息提取(一) requests库

Request库入门

import requests #引入requests库 
r = requests.get("http://www.baidu.com") #构造一个向服务器请求资源的Request对象,r是返回一个包含服务器资源的Response对象
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()  #如果状态码不是200,引发HTTPError异常
        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()  #如果状态码不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return("访问异常")

if __name__ == "__main__":
    url = "http://www.baidu.com/s" #记得加上/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
 headers = {'user-agent': 'my-app/0.0.1'}
 r = requests.get(url, headers=headers)      

你可能感兴趣的:(python爬虫)