版权声明:author:Old Monster ,qq:767267711 ,email:[email protected] https://blog.csdn.net/qq_42259469/article/details/84543124
使用python的scrapy框架爬美女图
我使用的工作环境如下
工 具 :PyCharm
python :3.7.0
框 架 :Scrapy
爬图目标美桌壁纸:http://www.win4000.com/
项目开始前先安装我们的scrapy框架直接在cdm输入:pip install Scrapy
ok,开始新建我们的项目直接在cmd输入:scrapy startproject 项目名称,以下提示就创建好项目了.
用PyCharm打开我们的项目
接着在终端Terminal新建我们的爬虫项目输入以下命令
scrapy genspider -t crawl 项目名称 网址
会在spiders下生成一个meizhuo.py文件,在里面我们设置相关数据
name = 'meizhuo' #爬虫名称
allowed_domains = ['win4000.com'] #网址域名
start_urls = ['http://www.win4000.com/meitu.html'] #爬取页面
在rules里写入规则(meizhuo.py下)
rules = (
Rule(LinkExtractor(allow=r'http://www.win4000.com/meinv\d+.html'), callback='parse_item', follow=True),
Rule(LinkExtractor(allow=r'http://www.win4000.com/meinv\d+_\d+.html'), callback='parse_item', follow=True),
)
获取图片的唯一链接,在开发者模式下Ctrl+F,获取到后赋值粘贴到下面(meizhuo.py下)
def parse_item(self, response):
i = MeizhuobizhiItem()
#提取图片url 供下载用,['image_urls'] 里面的image_urls是和items里的名字要一致
i['image_urls'] = response.xpath('.//div[@id="pic-meinv"]/a/img/@data-original').extract()
yield i
在items.py下(它是我们整个数据存储的地方)
class MeizhuobizhiItem(scrapy.Item):
image_urls = scrapy.Field() #图片的url
images = scrapy.Field()
在我们的爬虫项目里导入items和图片管道(meizhuo.py下)
from ..items import MeizhuobizhiItem #items
from scrapy.pipelines.images import ImagesPipeline #图片管道
然后赋值图片管道改成"."到settings.py里的ITEM_PIPELINES 注册格式如下(settings.py下)
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 300,
}
IMAGES_STORE='美桌美女' #存储图片文件夹的名字
配置默认的请求头(settings.py下)
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'Referer':'http://www.win4000.com/' #域名,默认请求地址
}
ROBOTSTXT_OBEY = True可以改成False拒绝遵守 Robot协议(settings.py下)
ok在终端运行我们的爬虫输入以下命令:
扫描二维码关注公众号,回复:
4625507 查看本文章
scrapy crawl meizhuo
运行后会发现项目里多了一个存储图片的文件夹
爬了40分钟2万多张美女图,我停止了到底能爬多少你可以试试
在终端Ctrl+C 可以停止爬取
码云源码地址:https://gitee.com/OldMonster/meizhuo