requests库中
apparent_encoding比encoding更加准确,因为encoding只分析了header中的代码,而apparent_encoding是真的在分析内容的
如果用户想要获取网站的信息则使用GET HEAD
如果想要修改或者给网站增加信息则使用 PUT POST PATCH DELETE
patch和put的区别
需求:用户改变了username其他不变
采用patch,仅向url提交username的局部更新请求
采用Put,必须将所有20个字段一并再次传给服务器,未提及的字段会被删除
patch的好处是节省网络宽带
request.request(method,url,**kwargs)
method:请求方式
r=requests.request('GET',url,**kwargs)
r=requests.request('HEAD',url,**kwargs)
r=requests.request('POST',url,**kwargs)
r=requests.request('PUT',url,**kwargs)
r=requests.request('PATCH',url,**kwargs)
r=requests.request('delete',url,**kwargs)
r=requests.request('OPTIONS',url,**kwargs)
七种
Robots协议
Robots Exclusion Standard 网络爬虫排除标准
用于告知网络爬虫那些页面可以抓取,哪些不行。
改头换面的方式:
import requests
url="http://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
kv=('user-agent':'Mozilla/5.0')
r=requests.get(url,headers=kv)
r.status_code
r.request.headers
print(r.text[1000:2000])
except:
print("爬取失败")
主要是try缩进里面的那些代码
import requests
keyword=""#这里输入关键字
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("爬取失败")
#爬取百度
import requests
keyword=""#这里输入关键字
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("爬取失败")
#爬取360