作为scrapy系列的破冰文章,当然需要女神丫丫(压压)场,简单通过十多行代码,便可完成女神图片抓取并储存。看看如何将女神收入麾下:
新建爬虫项目
scrapy startproject scrapy1
#进入spiders目录
scrapy genspider yaya win4000.com
#进入spiders目录
scrapy genspider yaya win4000.com
第一行创建一个scrapy项目,进入spiders目录后,第二行会生成一个spiders的py文件,命名为yaya,win4000.com是我们要抓取网站的域名。
编写items
打开items文件
import scrapy
class ImageItem(scrapy.Item):
url = scrapy.Field()
items是相当于一个容器,把抓取到的各种信息可以先在这里走个过场,然后方便传到pipelines里,这里只需要导入scrapy,定义一个url就行,这个url就是之后我们抓取到的图片的链接。
编写spider
打开yaya,这是爬虫的核心所在:
import scrapy
from scrapy1.items import ImageItem
class ImageDlnSpider(scrapy.Spider):
name = 'yaya'
allowed_domains = ['win4000.com']
start_urls = ['http://www.win4000.com/mt/tongliya.html']
def parse(self, response):
img_list = response.xpath("//div[@class='Left_bar']//img/@src").extract()
for url_list in img_list:
item = ImageItem()
item['url'] = [url_list]
yield item
这里先把items里的ImageItem类导入,因为我们需要对url字段进行操作,ImageDlnSpider类中,name是爬虫的名字,要保证这是唯一的,allowed_domains允许的域名,start_urls起始的抓取链接,它会调用parse函数,parse函数中便是抓取的过程了,非常简单,使用scrapy已经封装好的xpath,在for循环中实例ImageItem类,把链接赋值于item['url'],再yield出去,yield也是scrapy中非常重要的用法,后面的文章会有介绍。
编写settings
打开settings文件:
ROBOTSTXT_OBEY = False
#不遵守爬虫守约
ITEM_PIPELINES = {
# 'image.pipelines.ImagePipeline': 300,
'scrapy.pipelines.images.ImagesPipeline':100,
#激活这个管道
}
IMAGES_URLS_FIELD = "url"
#需要下载的图片链接是items里定义的url
IMAGES_STORE = ".\\"
#图片存储地址
运行爬虫
在yaya.py所在的文件夹下打开命令行:
scrapy crawl yaya
大功告成!!!
个人公众号,有精选的学习资料,关注即可获得噢。还有一系列scrapy文章在公众号里第一时间发布,希望和大家一起探讨学习!