Python爬虫实战:使用requests和lxml库爬取美食图片
Python爬虫实战:使用requests和lxml库爬取美食图片
想要学习如何使用Python编写爬虫程序,从网站上抓取图片吗?这篇文章将带你一步步实现一个简单的图片爬虫,使用requests和lxml库从美食网站上下载图片。
代码示例
以下是我们将会使用的Python代码:pythonimport requestsimport osfrom lxml import etree
创建保存图片的目录if not os.path.exists('images'): os.makedirs('images')
base_url = 'https://m.meishij.net/shicaizuofa/caoyu/'page = 1count = 0
while count < 30: # 构造当前页的URL url = base_url + f'p{page}/'
# 发送GET请求获取网页内容 response = requests.get(url) html = response.text
# 使用lxml库解析网页内容 tree = etree.HTML(html)
# 使用XPath提取图片和名称 image_urls = tree.xpath('//li[@class='pic']/a/img/@src') names = tree.xpath('//li[@class='pic']/a/div/p[@class='name']/text()')
for image_url, name in zip(image_urls, names): # 下载图片 response = requests.get(image_url)
# 保存图片到本地,将图片命名为同一个标签中的名称 image_name = name + '.jpg' with open(f'images/{image_name}', 'wb') as f: f.write(response.content)
count += 1 if count >= 30: break
page += 1
代码解析
- 导入必要的库:
requests用于发送HTTP请求,os用于创建目录,lxml用于解析HTML文档。2. 创建保存图片的目录 'images'。3. 定义目标网站的URL和初始页面。4. 使用循环遍历页面,直到下载30张图片。5. 发送GET请求获取网页内容,使用etree.HTML()解析HTML文档。6. 使用XPath表达式提取图片URL和对应的名称。7. 循环遍历图片URL列表,下载图片并保存到本地。
常见问题
- 代码无法运行? 确保你已经安装了
requests和lxml库。可以使用以下命令安装:bash pip install requests lxml- 图片无法下载? 检查网站结构是否发生变化,需要更新XPath表达式。- 下载速度慢? 可以考虑使用多线程或异步IO技术优化代码。
希望这篇文章能够帮助你理解如何使用Python爬取图片。请记住,在进行网络爬虫时,请遵守robots协议和网站的 terms of service,避免对网站造成过大的负担。
原文地址: https://www.cveoy.top/t/topic/mUN 著作权归作者所有。请勿转载和采集!