欢迎光临
我们一直在努力

python – 使用 scrapy 抓取美女图片实录

问题导读:

1.环境搭建

2.创建scrapy 工程

3.代码

4.启动

解决方案:

环境搭建

  1. Windows 7 x64 + python 2.7.5 scrapy 1.1.0
  • 按顺序安装:
(1)python-2.7.5.amd64.msi
双击安装 -> 将路径添加到环境变量中

  1. ;C:\Python27;C:\Python27\Scripts

(2)lxml-3.3.1.win-amd64-py2.7.exe

双击安装 – > 测试 -> 若没有出现错误提示择安装成功
(3)zope.interface-4.1.0.win-amd64-py2.7.exe
(4)Twisted-16.2.0-cp27-none-win_amd64.whl
  1. 进入终端
  2. cd 到 安装包所在的目录
    1. pip install Twisted-16.2.0-cp27-none-win_amd64.whl
(5)pyOpenSSL-16.0.0-py2.py3-none-any.whl
(6)pywin32-218.win-amd64-py2.7.exe
  • 安装scrapy
  1. pip install scrapy

  • 安装sublime_text 文本编辑器:
  1. {
  2.     “color_scheme”: “Packages/Color Scheme – Default/iPlastic.tmTheme”,
  3.     “font_face”: “consolas”,
  4.     “font_size”: 14.0
  5. }

创建scrapy 项目

  • 创建项目
(1)进入控制台 cd 到要创建工程的目录下面
  1. (2)scrapy startproject jiandan

(3)创建完,找到jiandan 这个文件夹,进入

(4)在spiders 中创建jiandanSpider.py – > 我们的爬虫

代码

  • jiandanSpider:
  1. #coding:utf-8
  2. import scrapy
  3. from jiandan.items import JiandanItem
  4. from scrapy.crawler import CrawlerProcess
  5. class jiandanSpider(scrapy.Spider):
  6.     name = ‘jiandan’
  7.     allowed_domains = []
  8.     start_urls = [“http://jandan.net/ooxx”]
  9.     def parse(self,response):
  10.         item = JiandanItem()
  11.         item[‘image_urls’] = response.xpath(‘//img//@src’).extract()#提取图片链接
  12.         print ‘image_urls’,item[‘image_urls’]
  13.         yield item
  14.         new_url = response.xpath(‘//a[@class=”previous-comment-page”]//@href’).extract_first()#翻页
  15.         print ‘new_url’,new_url
  16.         if new_url:
  17.             yield scrapy.Request(new_url,callback=self.parse)
  • items:
  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. class JiandanItem(scrapy.Item):
  4.     # define the fields for your item here like:
  5.     image_urls = scrapy.Field()#图片的链接
  • pipelines:
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import urllib
  4. from jiandan import settings
  5. class JiandanPipeline(object):
  6.     def process_item(self, item, spider):
  7.         dir_path = ‘%s/%s’%(settings.IMAGES_STORE,spider.name)#存储路径
  8.         print ‘dir_path’,dir_path
  9.         if not os.path.exists(dir_path):
  10.             os.makedirs(dir_path)
  11.         for image_url in item[‘image_urls’]:
  12.             list_name = image_url.split(‘/’)
  13.             file_name = list_name[len(list_name)-1]#图片名称
  14.             print ‘filename’,file_name
  15.             file_path = ‘%s/%s’%(dir_path,file_name)
  16.             print ‘filepath’, file_path
  17.             if os.path.exists(file_name):
  18.                 continue
  19.             with open(file_path,‘wb’) as file_writer:
  20.                 conn = urllib.urlopen(image_url)#下载图片
  21.                 file_writer.write(conn.read())
  22.             file_writer.close()
  23.         return item
  • settings:
  1. # -*- coding: utf-8 -*-
  2. # Scrapy settings for jiandan project
  3. #
  4. # For simplicity, this file contains only settings considered important or
  5. # commonly used. You can find more settings consulting the documentation:
  6. #
  7. #     http://doc.scrapy.org/en/latest/topics/settings.html
  8. #     http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
  9. #     http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html
  10. BOT_NAME = ‘jiandan’
  11. SPIDER_MODULES = [‘jiandan.spiders’]
  12. NEWSPIDER_MODULE = ‘jiandan.spiders’
  13. ITEM_PIPELINES = {
  14.    ‘jiandan.pipelines.JiandanPipeline’1,
  15. }
  16. # ITEM_PIPELINES = {‘jiandan.pipelines.ImagesPipeline’: 1}
  17. IMAGES_STORE=‘F:\\jiandan01’
  18. DOWNLOAD_DELAY = 0.25
  19. IMAGES_THUMBS = {#缩略图的尺寸,设置这个值就会产生缩略图
  20.     ‘small’: (5050),
  21.     ‘big’: (200200),
  22. }
  23. # Crawl responsibly by identifying yourself (and your website) on the user-agent
  24. USER_AGENT = ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0’
  25. # Configure maximum concurrent requests performed by Scrapy (default: 16)
  26. #CONCURRENT_REQUESTS=32
  27. # Configure a delay for requests for the same website (default: 0)
  28. # See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay
  29. # See also autothrottle settings and docs
  30. #DOWNLOAD_DELAY=3
  31. # The download delay setting will honor only one of:
  32. #CONCURRENT_REQUESTS_PER_DOMAIN=16
  33. #CONCURRENT_REQUESTS_PER_IP=16
  34. # Disable cookies (enabled by default)
  35. #COOKIES_ENABLED=False
  36. # Disable Telnet Console (enabled by default)
  37. #TELNETCONSOLE_ENABLED=False
  38. # Override the default request headers:
  39. DEFAULT_REQUEST_HEADERS = {
  40.   ‘Accept’‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’,
  41.   ‘Accept-Language’‘en’,
  42.   ‘Referer’:‘http://jandan.net/ooxx’
  43. }
  44. # Enable or disable spider middlewares
  45. # See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html
  46. #SPIDER_MIDDLEWARES = {
  47. #    ‘jiandan.middlewares.MyCustomSpiderMiddleware’: 543,
  48. #}
  49. # Enable or disable downloader middlewares
  50. # See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
  51. #DOWNLOADER_MIDDLEWARES = {
  52. #    ‘jiandan.middlewares.MyCustomDownloaderMiddleware’: 543,
  53. #}
  54. # Enable or disable extensions
  55. # See http://scrapy.readthedocs.org/en/latest/topics/extensions.html
  56. #EXTENSIONS = {
  57. #    ‘scrapy.telnet.TelnetConsole’: None,
  58. #}
  59. # Configure item pipelines
  60. # See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
  61. # Enable and configure the AutoThrottle extension (disabled by default)
  62. # See http://doc.scrapy.org/en/latest/topics/autothrottle.html
  63. # NOTE: AutoThrottle will honour the standard settings for concurrency and delay
  64. #AUTOTHROTTLE_ENABLED=True
  65. # The initial download delay
  66. #AUTOTHROTTLE_START_DELAY=5
  67. # The maximum download delay to be set in case of high latencies
  68. #AUTOTHROTTLE_MAX_DELAY=60
  69. # Enable showing throttling stats for every response received:
  70. #AUTOTHROTTLE_DEBUG=False
  71. # Enable and configure HTTP caching (disabled by default)
  72. # See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
  73. #HTTPCACHE_ENABLED=True
  74. #HTTPCACHE_EXPIRATION_SECS=0
  75. #HTTPCACHE_DIR=’httpcache’
  76. #HTTPCACHE_IGNORE_HTTP_CODES=[]
  77. #HTTPCACHE_STORAGE=’scrapy.extensions.httpcache.FilesystemCacheStorage’

启动爬虫

  1. scrapy crawl jiandan

未经允许不得转载:李雨芯的博客 » python – 使用 scrapy 抓取美女图片实录

分享到:更多 ()