【MOOC】Requests库

一、安装Requests库

cmd命令行 --- pip install requests

二、Requests库7个主要方法

1、requests.request(method , url , **kwargs)

  method :请求方法  ‘GET’、’HEAD’、’POST’、’PUT’、’PATCH’、’delete’、’OPTIONS’

  **kwargs :控制访问参数,可选项【13个】

(1)      params :字典或字节序列,作为参数增加到url中,把参数提交到服务器,服务器根据参数筛选资源返回【‘GET’】

(2)      data :字典、字节序列或文件对象,作为Request的内容【‘POST’、’PUT’】

(3)      json :JSON格式数据,作为Request的内容【‘POST’、’PUT’】

(4)      headers :字典,HTTP定制头【‘POST’、’PUT’】模拟浏览器

(5)      cookies :字典或CookieJar【‘POST’、’PUT’】

(6)      auth :元组,支持HTTP认证功能

(7)      files :字典,传输文件

(8)      timeout :设定超时时间,秒

(9)      proxies :字典,设定访问代理服务器,可以增加登录认证,防止爬虫逆追踪

(10)  allow_redirects :True/False,默认True,重定向开关

(11)  stream :True/False,默认True,获取内容是否立即下载

(12)  verify :True/False,默认True,认证SSL证书开关

(13)  cert :本地SSL证书路径

2、requests.get(url,params=None,**kwargs)

 

Request对象  :向服务器请求资源

Response对象 :返回包含服务器资源

 

3、requests.head(url , **kwargs)  获取头部信息,资源概要

4、requests.post (url ,data=None , json=None ,  **kwargs)  附加新数据

5、requests.put (url , data=None ,  **kwargs)  覆盖原url资源的内容

6、requests.patch (url , data=None , **kwargs)  局部修改

7、requests.post (url ,**kwargs)  删除请求

 

 三、requests库异常处理

 

 四、爬取网页通用框架

可抛出异常,使网页爬取更有效

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))

 

五、实例 

1、京东商品页面爬取

import requests
url = "https://item.jd.com/10606162030.html"
try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失败!")

 

2、亚马逊商品页面爬取

亚马逊会以来源审查方式拦截不友好的User-Agent(爬虫)

查看headers内的User-Agent为 'python-requests/2.22.0'会被拦截
需要将User-Agent改为'Mozilla/5.0',浏览器的标准headers,模拟浏览器向服务器发起请求
import requests
url = "https://www.amazon.cn/dp/B07FTXBNVL?ref_=Oct_DLandingS_D_5d3c58a2_62&smid=A3CQWPW49OI3BQ"
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:2000])
except:
    print("爬取失败!")

 

 

3、百度/360搜索关键词提交

## 百度关键词接口  https://www.baidu.com/s?wd=keyword
import requests
keyword = 'python'
try:
    kv = {'wd':keyword}
    r = requests.get('http://www.baidu.com/s',params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print('爬取失败')


##360关键词接口  https://www.so.com/s?q
import requests
keyword = 'python'
url = 'http://www.so.com/s'
try:
    kv = {'q':keyword}
    r = requests.get(url,params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print('爬取失败')

  

4、网络图片的爬取与存储

#网络图片的爬取与存储
import requests
import os
url = 'http://image.biaobaiju.com/uploads/20190728/18/1564309609-PTqdhHcgYt.jpeg'
root = 'C://pic//'  ##存储到C盘下的pic文件中
path =root + url.split('/')[-1] #提取url最后一个‘/’后面的字符作为存储图片的名字
try:
    if not os.path.exists(root): ##判断根目录是否存在,若不存在,建立目录
        os.mkdir(root)
    if not os.path.exists(path): ##判断文件是否存在,若不存在,则根据url获取
        r = requests.get(url)
        with open(path, 'wb') as f:
            f.write(r.content)   ##r.content 返回内容的二进制形式
            f.close()
            print('文件保存成功!')
    else:
        print('文件已经存在!')
except:
    print('爬取失败!')

  

 

 

 

 

 

 

 

  

 

posted @ 2019-11-25 16:17  kuluma  阅读(170)  评论(0编辑  收藏  举报