日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

scrapy爬虫,爬取图片

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scrapy爬虫,爬取图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、scrapy的安裝:

本文基于Anacoda3,

Anacoda2和3如何同時安裝?

將Anacoda3安裝在C:\ProgramData\Anaconda2\envs文件夾中即可。

如何用conda安裝scrapy?

安裝了Anaconda2和3后,

?

?

如圖,只有一個命令框,可以看到打開的時候:

?

?

可以切到Anaconda3對應的路徑下即可。

安裝的方法:cmd中:conda install scrapy即可。

當然,可能會出現權限的問題,那是因為安裝的文件夾禁止了讀寫。可以如圖:

將權限都設為“允許“。

注意:此時雖然scapy安裝上了,但是在cmd中輸入scapy可能會不認,可以將安裝scrapy.exe的路徑添加到環境變量中。

?

二、scapy的簡單使用

例子:爬取圖片

1、 創建scrapy工程

譬如,想要創建工程名:testImage

輸入:scrapy startproject testImage

即可創建該工程,按照cmd中提示的依次輸入:

cd testImage

scrapy genspider getPhoto www.27270.com/word/dongwushijie/2013/4850.html

其中:在當前項目中創建spider,這僅僅是創建spider的一種快捷方法,該方法可以使用提前定義好的模板來生成spider,后面的網址是一個采集網址的集合,即為允許訪問域名的一個判斷。注意不要加http/https。

?

至此,可以在testImage\testImage\spiders中找到創建好的爬蟲getPhoto.py,可以在此基礎上進行修改。

2、創建爬蟲

如圖,可以在圖片的位置右鍵,檢查,查看源碼,在圖片所在的位置處,將xpath拷貝出來。

此時,可以找出圖片的地址:

class GetphotoSpider(scrapy.Spider):name = 'getPhoto'allowed_domains = ['www.27270.com']start_urls = ['http://www.27270.com/word/dongwushijie/2013/4850.html']def parse(self, response):urlImage = response.xpath('//*[@id="picBody"]/p/a[1]/img/@src').extract()print(urlImage)pass

  

此時,注意網絡路徑的正確書寫,最后沒有/,

http://www.27270.com/word/dongwushijie/2013/4850.html/???

此時將4850.html 當作了目錄,會出現404找不到路徑的錯誤!

3、 下載圖片

items.py:

class PhotoItem(scrapy.Item):name = scrapy.Field()imageLink = scrapy.Field()

pipelines.py:

from scrapy.pipelines.images import ImagesPipeline import scrapy class ImagePipeline(ImagesPipeline):def get_media_requests(self,item,info):image_link = item['imageLink']yield scrapy.Request(image_link)

  

settings.py:

IMAGES_STORE = r"C:\Users\24630\Desktop\test"

另外,對于上面的網址,還需要ROBOTSTXT_OBEY = False

并且,訪問該網址會出現302錯誤,這是一個重定向的問題,

MEDIA_ALLOW_REDIRECTS =True

設置該選項,就可以正確下載,但是下載的還是不對,問題不好解決。

當然在爬蟲中,還要對items賦值:

from testImage import items 。。。for urllink in urlImage:item = items.PhotoItem()item['imageLink'] = urllink

  

三、 進一步爬取(讀取下一頁)

# -*- coding: utf-8 -*- import scrapy from testImage import items class GetphotoSpider(scrapy.Spider):name = 'getPhoto'allowed_domains = ['www.wmpic.me']start_urls = ['http://www.wmpic.me/93912']def parse(self, response):#//*[@id="content"]/div[1]/p/a[2]/imgurlImage = response.xpath('//*[@id="content"]/div[1]/p/a/img/@src').extract()print(urlImage)for urllink in urlImage:item = items.PhotoItem()item['imageLink'] = urllink yield itemifnext = response.xpath('//*[@id="content"]/div[2]/text()').extract()[0] # 當沒有下一篇,即最后一頁停止爬取if("下一篇" in ifnext):nextUrl = response.xpath('//*[@id="content"]/div[2]/a/@href').extract()[0]url=response.urljoin(nextUrl)yield scrapy.Request(url=url)

  此時,便可以看到路徑下的下載后的文件了。(由于該網址每頁的圖片所在的xpath都不一樣,故下載的圖片不全)

轉載于:https://www.cnblogs.com/pinking/p/8051836.html

總結

以上是生活随笔為你收集整理的scrapy爬虫,爬取图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。