1.requests库:python中原生的基于网络请求的模块,功能强大,简单便捷,效率高
2.作用:模拟浏览器发送请求
3.使用步骤:
1>指定url
2>发送请求
3>获取请求的数据
4>持久化存储
4.分析url步骤:
1>查看该url请求是不是阿贾克斯请求,如果url不变,但是页面局部信息发生改变,那么就是阿贾克斯请求
2>查看该请求方法是POST请求还是GET请求
3>查看该请求所含有的参数有几个,分别代表什么意思
4>查看请求的内容类型是text还是json
例一:爬取京东商品信息
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:
peinr("爬取失败")
例二:亚马逊商品的爬取
import requests
url = "https://www.amazom.cn/gp/product/B0110151"
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("爬取失败")
当user-agent为python的reuqesta时,网站可以拒绝访问。因为网站接受是浏览器引发或产生的HTTP请求,可以拒绝由爬虫产生的HTTP请求,所以将程序模拟为一个浏览器,重新定义user-agent的内容。此时就要进行一个简单的反爬策略,即UA伪装
例三:豆瓣电影信息的爬取
例四:网络图片的爬取和存储
import requests
import os
root = "D:/picture.jpg"
url = "http://im....."
path = root + url.spilt('/')[-1]
try:
if not os.path.exists(root): #判断文件root是否存在
os.mkdir(root)
if not os.path.exquests(path): #判断文件path是否存在
r = reqyests.get(url)
with open(path,'wb') as f: #打开文件
f.write(r.content) #将图片内容作为二进制保存
f.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
例五:IP地址归属地的自动查询
import requests
url = "hhtp://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:1])
except:
print("爬取失败")