Python爬虫(二)
学习Python爬虫过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
—— requests库实践 ——
1.京东商品页面的爬取
import requests
url = "https://item.jd.com/100004770249.html"
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
结果如图:
2. 实例3:百度360搜索关键词提交
百度的关键词接口: http://www.baidu.com/s?wd=keyword
360的关键词接口: http://www.so.com/s?q=keyword
百度
import requests
keyword = "Python"
try:
kv = {'wd':keyword}
r = requests.get("https://www.baidu.com/s",params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")
结果如图:
【注意】由于百度对搜索地址安全的考虑,按照上述方法进行关键词提交会直接进入到百度的安全验证界面,即图中长度较长的url地址,完成验证才可以进入搜索界面,是一种反爬机制。
搜狗
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("爬取失败")
结果如图:
很显然,搜狗在反爬机制上就没有百度那么严密,所以我们可以直接进入到结果页面。
3. 网络图片的爬取和存储
import requests
import os
url = "http://img0.dili360.com/ga/M00/48/F7/wKgBy1llvmCAAQOVADC36j6n9bw622.tub.jpg"
root="E://"
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)
r.raise_for_status()
with open(path, 'wb') as f:
f.write(r.content)# r.content表示返回内容的二进制形式,
f.close() # 图片是以二进制形式存储的
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
结果如下: