xpath爬取实例
前言
提示:这里可以添加本文要记录的大概内容:
本节主要介绍在学习过程中掌握的爬取图片的简单示例
提示:以下是本篇文章正文内容,下面案例可供参考
一、模块导入
pip install requests
pip install lxml
二、示例
1.单图爬取
只需找到完整 的图片地址即可
代码如下(示例):
import requests
if __name__ == "__main__":
#创建一个文件夹,保存所有的图片
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40'
}
url ='http://pic.netbian.com/uploads/allimg/181223/205433-154556967383ec.jpg'#所要爬取图片的完整地址
img_data = requests.get(url=url,headers=headers).content #返回二进制数据
with open('./1.jpg','wb') as fp:
fp.write(img_data)'''
2.多图爬取
代码如下(示例):
from lxml import etree
import requests
import os
if __name__ == '__main__':
url = 'http://pic.netbian.com/shoujibizhi/'#目标需求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
response = requests.get(url, headers=headers)
# 手动设置响应数据的编码格式
# response.encoding='utf-8'
page_text = response.text
tree = etree.HTML(page_text)
li_list = tree.xpath('//div[@class="alist"]/ul/li')
if not os.path.exists('./img'):#创建文件夹用以保存
os.mkdir('./img')
for li in li_list:
img_src = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0]
img_name = li.xpath('./a/img/@alt')[0] + '.jpg'
# 通用处理中文乱码的解决方案
img_name = img_name.encode('iso-8859-1').decode('gbk')
img_data = requests.get(img_src, headers=headers).content
img_path = './img/' + img_name
with open(img_path, 'wb') as fp:
fp.write(img_data)
print(img_name, '爬取成功!')f翻页
翻页操作,添加循环
for page in range(1,10)
url = 'http://pic.netbian.com/shoujibizhi/index_{page}.html'
总结
以上就是今天要讲的内容,本文仅仅简单介绍了通用xpath的简单案例,以备后用