python网络爬虫之requests库

import requests

1、requests库有两个对象,Request对象和Response对象,下表是Response对象的属性

属性 说明
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.enconding HTTPheader中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

2、requests库异常

异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败,拒绝连接
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常

3、get()函数,获取html网页的主要方法,对应HTTP的GET,requests.get(url,params=None,**kwargs) url是链接地址,params是url中的额外参数,字典或字节流格式,可选。**kwargs,十二个控制访问的参数。

#通用爬取框架
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 "产生异常"
4、params字段:字典或字节序列,作为参数增加到url中,下面的例子可作为手工组成百度搜索的url
import requests
payload = {'wd': '中国', 'rn': '100'}#wd是搜索词,rn是搜索结果数量
r = requests.get("http://www.baidu.com/s", params=payload)
print一下的话,你会发现
>>> print(r.url)
http://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD&rn=100
5.模拟浏览器访问
import requests
url="http://www.baidu.com"
try:
    kv={'user-agent':'Mozilla/5.0'}
    r=requests.get(url,headers=kv)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失败")
6、爬取图片
import requests
import os
#爬取的图片是两头狼
url="http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
keyword='程序猿'
root="E:/web_spider/"
path=root+url.split('/')[-1]
kv={'user-agent':'Mozilla/5.0'}
kd={'wd':keyword}
try:
    # r=requests.get(url,params=kd,headers=kv)
    if not os.path.exists(root):
        os.mkdir(root)
    if not os.path.exists(path):
        r=requests.get(url,headers=kv)
        r.raise_for_status()
        with open(path,'wb') as f:
            f.write(r.content)
            f.close()
            print("文件保存成功")
    else:
        print("文件已经存在")
except:
    print("爬取失败")



注:参考资源来自中国大学mooc《Python网络爬虫与信息提取》

你可能感兴趣的:(python)