赞
踩
params:字典或字节序列,作为参数增加到url中。
mx={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=mx)
print(r.url)
data:字典、字节序列或文件对象,作为Request的内容【向服务器提供/提交资源时使用】
mx={'key1':'value1','key2':'value2'}
r=requests.request('POST','http://python123.io/ws',data=mx)
body='aha'
r=requests.request('POST','http://python123.io/ws',data=body)
json:JSON格式的数据,作为Request的内容
mx={'key1':'value1','key2':'value2'}
r=requests.request('POST','http://python123.io/ws',json=mx)
headers:字典,HTTP定制头【可用于模拟浏览器实现访问】
cookies:字典或CookieJar,Request中的cookie
auth:元组,支持HTTP认证功能
files:字典类型【是向服务器传输文件时所用的字段】
timeout:设定超时时间,以秒为单位。【规定时间内没有收到请求的内容,将产生timeout的异常】
r=requests.request('GET','http://python123.io/ws',timeout=10)
proxies:字典类型【可以为爬取网页设定访问代理服务器,可以增加登录认证,可以隐藏用户的原ip地址信息,有效地防止对爬虫的逆追踪】
pxs={'http:':'http://user:pass@10.10.10.1:1234'
'https':'http://10.10.10.1:4321'}
r=requests.request('GET','http://www.baidu.com',proxies=pxs)
allow_redirects:True/False,默认为True,是重定向开关。
stream:True/False,默认为True,获取内容立即下载开关。
verify:True/False,默认True,认证SSL证书开关。
cert:本地SSL证书路径。
requests.get():该函数的原型为requests.get(url,params=None,**kwargs):
url:待获取页面的url链接
params:url的额外参数,字典或字节流格式,可选;
**kwargs:12个控制访问的参数,可选。即requests.request()方法中,除了param的12个参数
url:待获取页面的url链接。
**kwargs:13个控制访问的参数,可选。
r=requests.head('http://httpbin.org/get')
r.headers
//返回网页头的信息
r.text
向URL POST一个字典,自动编码为form表单【实例接上方head】
requests.post(url,data=None,json=None,**kwargs)
url:待获取页面的url链接
data:字典、字节序列或文件对象,作为Request的内容。
json:JSON格式的数据,作为Request的内容
**kwargs:11个控制访问的参数,可选。
payload={'key1':'value1','key2':'value2'}
r.requests.post('http://httpbin.org/post',data=payload)
print(r.text)
//返回的data为空,但form表单不为空
//向URL POST一个字符串自动编码为data
r.requests.post('http://httpbin.org/post',data=‘ABC')
print(r.text)
//返回的data为Aha,form表单为空
可将原有的数据覆盖掉
requests.put(url,data=None,**kwargs)
url:待获取页面的url链接
data:字典、字节序列或文件对象,作为Request的内容。
**kwargs:12个控制访问的参数,可选。即requests.request()方法中,除了data的12个参数
payload={'key1':'value1','key2':'value2'}
r.requests.put('http://httpbin.org/put',data=payload)
print(r.text)
requests.patch(url,data=None,**kwargs)
url:待获取页面的url链接
data:字典、字节序列或文件对象,作为Request的内容。
**kwargs:12个控制访问的参数,可选。即requests.request()方法中,除了data的12个参数
requests.delete(url,**kwargs)
url:待删除页面的url链接
**kwargs:13个控制访问的参数,可选。
下面以代码为例介绍response的对象
import requests
r=requests.get("http://baidu.com")
print(r.status_code)//返回200说明连接成功,返回404说明没有找到该链接,可能是输入有误
type(r)//查看当前r的类型——Response
r.headers
//查看网页头的信息
Response对象包含服务器返回的所有信息,同时也包含了我们向服务器发送请求的Request信息。
通用代码框架:一行代码能够准确、可靠地爬取网页的内容。
通常我们都是使用requests.get()方法来获取网页的信息,但是因为网页连接有风险,所以异常处理异常重要。
Response对象返回了所有的网页内容同时提供了一个方法r.raise_for_status()。该方法可以判断返回的response类型,如果返回的不是200,则产生异常requests.HTTPError。
可以有效地处理我们在访问爬取网页的过程中,可能出现的错误。
import requests def getHTMLText(url) try: r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: return "产生了异常“ ```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200421172446540.png#pic_center) ***应用上述框架*** ```javascript name="main" if name="main": url="http://www.baidu.com" print(getHTMLText(url))
(一)使用request爬取”python之禅界面“
import requests
url = 'https://www.python.org/dev/peps/pep-0020/'
res = requests.get(url)
text = res.text
text
with open('zon_of_python.txt', 'w') as f:
//创建一个名为zon_of_python的文件并向其中执行写操作
f.write(text[text.find('<pre')+28:text.find('</pre>')-1])//将爬取内容带格式写入txt文件中
print(text[text.find('<pre')+28:text.find('</pre>')-1])
(二)使用python自带的urllib完成上述操作【但是一定要导入request库!!!】
import urllib
import requests
url= 'https://www.python.org/dev/peps/pep-0020/'
res = urllib.request.urlopen(url).read().decode('utf-8')
print(res[res.find('<pre')+28:res.find('</pre>')-1])
(三)爬取亚马逊商品信息
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("爬取失败")
(四)百度/360搜索关键词提交
百度的关键词接口:http://www.baidu.com/s?wd=keyword
360的关键词接口:http://www.so.com/s?q=keyword
百度:关键字:wd
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:关键字:q
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("爬取失败")
(五)网络图片的爬取
网络图片链接的格式:
http://www.example.com/picture.jpg
如:http://pic32.nipic.com/20130822/2531170_213039750000_2.jpg
单个案例
import requests
path="C:/Users/Alicecy/Desktop/abc.jpg"#存储位置及名称
url="http://pic32.nipic.com/20130822/2531170_213039750000_2.jpg" #图片地址
r=requests.get(url)
r.status_code
200
with open(path,'wb') as f:
f.write(r.content) #以二进制的形式写入图片
112639
f.close()
图片爬取的全代码
import requests import os url="http://pic32.nipic.com/20130822/2531170_213039750000_2.jpg" root="C:/Users/Alicecy/Desktop/picture//" #在picture文件夹下保存图片 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("爬取失败")
(六)IP地址归属地的自动查询
***手动查询:***https://m.ip138.com/iplookup.asp?ip=ipaddress
import requests
url="https://m.ip138.com/iplookup.asp?ip="
#r=requests.get(url+'202.204.80.112') #有些时候会被拒绝访问,所以就有了接下来的两行
kv={'user-agent':'Mozilla/5.0'}
r=requests.get(url+ '202.204.80.112',headers=kv)
r.text[-500:]
import requests
url="https://m.ip138.com/iplookup.asp?ip="
kv={'user-agent':'Mozilla/5.0'}
try:
r=requests.get(url+'2020.204.80.112',headers=kv)
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[-500:])
except:
print("爬取失败")
为了更好地理解request,需要结合HTTP协议
HTTP:超文本传输协议,是一个基于“请求与响应”模式的、无状态的应用层协议。采用 URL作为网络资源的标识。
无状态:表示第一次请求与第二次请求之间没有关联。
应用层协议:该协议规定于TCP协议之上
HTTP协议方法 | Request 库方法 | 功能一致性 |
---|---|---|
GET | requests.get() | 一致 |
HEAD | requests.head() | 一致 |
POST | requests.post() | 一致 |
PUT | requests.put() | 一致 |
PATCH | requests.patch() | 一致 |
DELETE | requests.delete() | 一致 |
小编有话说:
感谢路过的各位能够看到这里,本篇内容是学习嵩天教授的Python网络爬虫与信息提取课程.的笔记,感兴趣的您可以前去溜溜。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。