注:本文仅是个人的学习笔记,内容来源于中国大学mooc《Python网络爬虫与信息提取》课程
一 京东商品页面爬取
import requests
url = "https://item.jd.com/16392426155.html"
try:
r = requests.get(url)
r.raise_for_status()#检查访问信息的状态码,200表示正确
r.encoding = r.apparent_encoding#将编码改为可以显示的编码
print(r.text[:1000])
except:
print("爬取失败")
二 亚马逊商品页面的爬取
1 用一个字典kv保存需要修改的头部信息。
2 获取头部信息:
>>> r.request.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
3 访问url时,修改头部信息
import requests
url = "https://www.amazon.cn/dp/B074JV6Y48/ref=gwgfloorv1_BMVD_a_0?pf_rd_p=0e393420-91cc-445c-be7c-6f0361fc9c40&pf_rd_s=desktop-8&pf_rd_t=36701&pf_rd_i=desktop&pf_rd_m=A1AJ19PSB66TGU&pf_rd_r=M20Y5N4VVMJD20QCQZNY&pf_rd_r=M20Y5N4VVMJD20QCQZNY&pf_rd_p=0e393420-91cc-445c-be7c-6f0361fc9c40"
try:
kv = {'user-agent':'Mozilla/5.0'} #请求头
r = requests.get(url,headers = kv) #将请求头修改为kv
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:2000])
except:
print("爬取失败")
三 百度/360搜索关键词提交
字典kv用于保存需要查找到keywords
import requests
try:
kv = {'wd':'Python'}
r = requests.get('http://www.baidu.com/s',params = kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬虫失败")
四 网络图片的爬取和存储
网络图片链接格式:
http://www.example.com/picture.jpg
选择国家地理的一张图片url作为对象。
import requests
path = "D://abc.jpg"#保存的路径
url = "http://img0.dili360.com/rw9/ga/M01/48/3C/wKgBy1kj49qAMVd7ADKmuZ9jug8377.tub.jpg"
r = requests.get(url)
with open(path,'wb') as f:
f.write(r.content)#response对象的content属性:以二进制的方式写入文件
f.close()
代码优化:
引入os库
import requests
import os
url = "http://img0.dili360.com/rw9/ga/M01/48/3C/wKgBy1kj49qAMVd7ADKmuZ9jug8377.tub.jpg"
root = "D://pic//"
path = root + url.split('/')[-1]#分割url并以列表形式保存,取列表最后一位
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地址自动查询
import requests
url = "http://m.ip138.com/ip.asp?ip="
try:
r = requests.get(url)
r.raise_for_status
r.encoding = r.apparent_encoding
print(r.text[-5000:])#抓取ip地址对应网页的后5000个字符
except:
print("爬虫失败")
来源:oschina
链接:https://my.oschina.net/u/4393219/blog/4237124