北京理工大学MOOC爬虫笔记一(第0+1周)

一共四周

一、开发工具及特点

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

二、requests库

北京理工大学MOOC爬虫笔记一(第0+1周)

demo1:

import requests
r=requests.get('http://www.baidu.com')
print(r.status_code)
print(r.text)
print(r.encoding)
print("r.apparent_encoding:{}".format(r.apparent_encoding))
r.encoding='utf-8'
#不会出现乱码
print(r.text)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

demo2:爬虫的通用代码框架(捕获异常)

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

北京理工大学MOOC爬虫笔记一(第0+1周)

demo3:

北京理工大学MOOC爬虫笔记一(第0+1周)

payload={"key1":"value1","key2":"value2"}
r=requests.request('GET',"http://httpbin.org/post",params=payload)
print(r.url) #http://httpbin.org/post?key1=value1&key2=value2

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

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

    method:请求方式7种post/get/put等
​    url:拟获取页面的URL链接
​​    **kwags:13个控制访问的参数

(2)requests.get(url,params-None,**kwargs)
​    url:拟获取页面的URL链接
​    params:URL中的额外参数,字典或字节流格式,可选
​    **kwags:12个控制访问的参数

(3)requests.head(url,**kwags)
​    url:拟获取页面的URL链接
​    **kwags:13个控制访问的参数

(4)requests.post(url,data=None,json=None,**kwags)
​    url:拟更新页面的URL链接
​    data:字典、字节序列或文件,Request的内容
​    json:JSON格式的数据,作为Request的内容
​    **kwags:11个控制访问的参数

(5)requests.put(url,data=None,**kwags)
​    url:拟更新页面的URL链接
​    data:字典、字节序列或文件,Request的内容
​    **kwags:12个控制访问的参数

(6)requests.patch(url,data=None,**kwags)
​    url:拟更新页面的URL链接
​    data:字典、字节序列或文件,Request的内容
​    **kwags:12个控制访问的参数

(7)requests.delete(url,**kwags)
​    URL:拟删除页面的URL链接
​    **kwags:12个控制访问的参数

三、网络爬虫的“盗亦有道

北京理工大学MOOC爬虫笔记一(第0+1周)

北京理工大学MOOC爬虫笔记一(第0+1周)

四、实例

demo1:

import requests

url = "https://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
    # 重新定义 user-agent 内容,模拟浏览器
    kv = {'user-agent': 'Mozilla/5.0'}
    r = requests.get(url, headers = kv)
    r.raise_for_status() # 如果失败则返回错误,直接跳到 except
    # 亚马逊这里是错误 503
    r.encoding = r.apparent_encoding
    # 编码方式为自动选择为apparent_encoding
    # r.encoding = '...' # 这个网页编码是...
    print(r.text[:1000]) # 前1000个字符
except:
    print("爬取失败")

demo2:

import requests
keyword = 'Python' # 关键词 Python
kv = {'q':keyword}
try:
    r = requests.get("http://www.so.com/s",params = kv)
    # 如果失败则返回错误,直接跳到 except
    r.raise_for_status()
    print(r.request.url)
    print(len(r.text))
except:
    print("error")

demo3:

import requests
url = 'https://user.ip138.com/login?refer='

try:
    r = requests.get(url + 'https://user.ip138.com/ip/')
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[-500:]) # 倒数500字节
except:
    print("Fail")