目录
三、Requests库爬取实例
1、实例1:京东商品页面的爬取
# 实例1:京东商品页面的爬取
import requests
r = requests.get("http://item.jd.com/2967929.html")
r.status_code
print(r.status_code)
r.encoding # 编码。
print(r.encoding)
r.text[:1000] # 爬取前1000个字符。
print(r.text[:1000])
# 全代码
import requests
url = "http://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("爬取失败")
2、实例2:亚马逊商品页面的爬取
# 实例2:亚马逊商品页面的爬取
import requests
r = requests.get("http://www.amazon.cn/gp/product/B01M8L5Z3Y")
r.status_code
print(r.status_code)
r.encoding # 编码。
print(r.encoding)
r.encoding = r.apparent_encoding
r.text
print(r.text)
r.request.headers # 获取页面头部信息。
print(r.request.headers)
kv = {'user-agent': 'Mozilla/5.0'} # 标准的浏览器身份标识
url = "http://www.amazon.cn/gp/product/B01M8L5Z3Y"
r = requests.get(url, headers=kv) # 模拟浏览器访问
r.status_code
print(r.status_code)
r.request.headers # 获取页面头部信息。
print(r.request.headers)
r.text[:1000] # 爬取前1000个字符。
print(r.text[:1000])
# 全代码
import requests
url = "http://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("爬取失败")
3、实例3:百度/360搜索关键词提交
搜索引擎关键词提交接口:
①百度的关键词接口: http://www.baidu.com/s?wd=keyword。
②360的关键词接口: http://www.so.com/s?q=keyword。
# 实例3:百度/360搜索关键词提交
import requests
kv = {'wd': 'Python'}
r = requests.get("http://www.baidu.com/s", params=kv)
r.status_code
print(r.status_code)
r.request.url
print(r.request.url)
len(r.text)
print(len(r.text))
# 百度搜索全代码
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搜索全代码
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("爬取失败")
4、实例4:网络图片的爬取和存储
网络图片链接的格式:http://www.example.com/picture.jpg。
国家地理:http://www.nationalgeographic.com.cn/。
选择一个图片Web页面:http://www.nationalgeographic.com.cn/photography/photo_of_the_day/3921.html。
# 实例4:网络图片的爬取和存储
import requests
path = "./photo/abc.jpg"
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
r = requests.get(url)
r.status_code
print(r.status_code)
with open(path, 'wb') as f:
f.write(r.content)
f.close()
# 图片爬取全代码
import requests
import os
url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg"
root = "H://python//Web crawler//photo//"
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) # r.content表示返回内容的二进制形式,图片是以二进制形式存储的。
f.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
5、实例5:IP地址归属地的自动查询
IP查询:http://m.ip138.com/ip.asp?ip=ipaddress。
备注:网页(http://m.ip138.com/ip.asp?ip=ipaddress)连接失败,请读者更换成自己的网页。
# 实例5:IP地址归属地的自动查询
# import requests
#
# url = "http://m.ip138.com/ip.asp?ip=ipaddress"
# r = requests.get(url + '202.204.80.112')
# r.status_code
# print(r.status_code)
# r.text[-500:]
# print(r.text[-500:])
#
# # IP地址查询全代码
# import requests
#
# url = "http://m.ip138.com/ip.asp?ip=ipaddress"
# try:
# r = requests.get(url + '202.204.80.112')
# r.raise_for_status()
# r.encoding = r.apparent_encoding
# print(r.text[-500:])
# except:
# print("爬取失败")