爬虫实战——scrapy框架爬取多张图片
以下是一个使用Scrapy框架的简单示例,用于爬取一个网页上的多张图片。
首先,创建一个Scrapy项目和一个Spider:
scrapy startproject myproject
cd myproject
scrapy genspider mydomain mydomain.com
然后,编辑mydomain.py
文件以爬取图片:
import scrapy
class MySpider(scrapy.Spider):
name = 'mydomain'
allowed_domains = ['mydomain.com']
start_urls = ['http://www.mydomain.com/gallery']
def parse(self, response):
# 提取图片链接
image_urls = response.css('div.gallery a img::attr(src)').getall()
image_urls = ['http://www.mydomain.com' + url for url in image_urls]
# 为每个图片链接生成Scrapy Item对象
for url in image_urls:
yield {
'image_urls': [url],
}
接下来,定义一个Item Pipeline来下载图片:
import scrapy
class MyImagesPipeline(object):
def process_item(self, item, spider):
for url in item['image_urls']:
file_name = url.split('/')[-1]
with open(file_name, 'wb') as f:
f.write(url) # 简化版下载代码,实际应使用requests或其他库
return item
最后,在settings.py
中启用Item Pipeline:
ITEM_PIPELINES = {
'myproject.pipelines.MyImagesPipeline': 300,
}
这个简单的例子演示了如何使用Scrapy框架的基本组件来爬取和下载网页上的多张图片。在实际应用中,你需要根据具体的网站结构调整选择器表达式,并使用更健壮的图片下载方法。
评论已关闭