Requests库的安装:
以管理员身份运行cmd,并执行以下语句:
pip install requests
测试是否安装成功:
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
r.text
Requests库的7个主要方法:
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete | 向HTML页面提交删除请求,对应于HTTP的DELETE |
Requests库的get()方法:
r = requests.get(url)
1)r:返回一个包含服务器资源的Response对象
2)requests.get(url):构造一个向服务器请求资源的Request对象
requests.get(url, params=None, **kwargs)
1)url :拟获取页面的url链接
2)params :url中的额外参数,字典或字节流格式,可选
3) **kwargs: 12个控制访问的参数
网络爬虫的尺寸:
小规模,数据量小 | 中规模,数据规模较大 | 大规模,搜索引擎 |
---|---|---|
爬取速度不敏感 | 爬取速度敏感 | 爬取速度关键 |
Requests库 >90% | Scrapy库 | 定制开发 |
爬取网页 玩转网页 | 爬取网站 爬取系列网站 | 爬取全网 |
网络爬虫的限制
Robots协议:
Robots Exclusion Standard,网络爬虫排除标准
全代码:
import requests
url = "https://item.jd.com/2967929.html"
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
全代码:
import requests
url ="https://www.amazon.cn/gp/product/B01M8L5Z3Y"
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("爬取失败")
搜索引擎关键词提交接口:
XX搜索全代码:
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("爬取失败")
XX搜索全代码:
import requests
keyword = "Python"
try:
kv = {'q':keyword}
r = requests.get("http://www.so.com/s",params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")
网络图片的爬取
图片爬取全代码
import requests
import os
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
root = "D://pics//"
path = root + url.split('/')[-1]
try:
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(url)
with open(path, 'wb') as f:
f.write(r.content)
f.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
import requests
url = "http://m.ip138.com/ip.asp?ip="
try:
r= requests.get(url+'202.204.80.112')
r.raise_for_status()
r.encoding = r.apparent encoding
print(r.text[-500:])
except:
print("爬取失败")