国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Scrapy使用的基本流程與實(shí)例講解

2020-01-04 14:17:55
字體:
供稿:網(wǎng)友

前面已經(jīng)介紹過如何創(chuàng)建scrapy的項(xiàng)目,和對項(xiàng)目中的文件功能的基本介紹。

這次,就來談?wù)勈褂玫幕玖鞒蹋?/p>

(1)首先第一點(diǎn),打開終端,找到自己想要把scrapy工程創(chuàng)建的路徑。這里,我是建立在桌面上的。打開終端,輸入:
cd Desktop 就進(jìn)入了桌面文件存儲位置。

Scrapy,基本流程,實(shí)例

(2)創(chuàng)建scrapy工程。終端輸入:scrapy startproject image

Scrapy,基本流程,實(shí)例

終端輸入:cd image

繼續(xù)輸入:scrapy genspider imageSpider pic.netbian.com

Scrapy,基本流程,實(shí)例

(3)在pycharm中打開剛才桌面的文件,進(jìn)入settings.py設(shè)置爬蟲規(guī)則。可以將規(guī)則直接注釋掉,或者改為False

Scrapy,基本流程,實(shí)例

(4) 回到爬蟲文件。

Scrapy,基本流程,實(shí)例

更改start_url,將爬蟲默認(rèn)的第一個網(wǎng)址更改為需要爬取的網(wǎng)站網(wǎng)址即可。

(5)下面就可以爬取數(shù)據(jù)了,這里選擇了下載圖片。

爬取完數(shù)據(jù)之后,要在存儲數(shù)據(jù)的items.py文件中傳輸給管道

接下來在爬蟲文件中引入管道模型。

from ..items import ImageItem

在爬蟲文件中的parse函數(shù)中使用在items.py文件中創(chuàng)建的數(shù)據(jù)模型。

item = ImageItem()

注意點(diǎn):

有時候在終端輸出的時候,如果返回內(nèi)容是scrapy.selector ,如果對象類型是scrapy.selector,那么這個對象可以被繼續(xù)迭代,也可以用xpath繼續(xù)尋找里面的內(nèi)容。

如果終端遇到這個問題:

# ValueError:Missing scheme in request url:h

那么就需要使用extract()將xpath對象轉(zhuǎn)化成列表對象。而列表對象,可以繼續(xù)被迭代,但是不可以使用xpath來尋找里面的對象。

在下載之前還需要在settings.py文件中,對圖片下載的路徑和存儲位置進(jìn)行設(shè)置。

Scrapy,基本流程,實(shí)例

下面附代碼如下。僅有爬蟲文件的代碼:

# -*- coding: utf-8 -*-import scrapyfrom ..items import ImageItemclass ImagespiderSpider(scrapy.Spider):  name = 'imageSpider'  allowed_domains = ['pic.netbian.com']  start_urls = ['http://pic.netbian.com/4kmeinv/']   def parse(self, response):    img_list = response.xpath('//ul[@class="clearfix"]/li/a/img/@src')    # 找到了很多src屬性值,現(xiàn)在進(jìn)行遍歷,分別使用每一個    for img in img_list:      # 使用在items.py中創(chuàng)建的數(shù)據(jù)模型item      item = ImageItem()      print('--------------------')      img = img.extract()      # 拼接圖片的url,得到完整的下載地址      src = 'http://pic.netbian.com' +img      # 將得到的數(shù)據(jù)放入到模型中      # 因?yàn)槭窍螺d地址,所以要用列表包起來,否則會報(bào)錯。      item['src'] = [src]      yield item    next_url = response.xpath('//div[@class="page"]/a[text()="下一頁"]/@href').extract()    print('*****************************************************************')    if len(next_url)!=0:      url = 'http://pic.netbian.com'+next_url[0]      # 將url傳給scrapy.Request 得到的結(jié)果繼續(xù)用self.parse進(jìn)行處理      yield scrapy.Request(url=url,callback=self.parse)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江西省| 吉安市| 金塔县| 枞阳县| 桓台县| 顺义区| 县级市| 乌鲁木齐县| 嵊州市| 奉贤区| 兴义市| 岳西县| 格尔木市| 乌兰浩特市| 宁津县| 三穗县| 安平县| 千阳县| 荣成市| 余干县| 宝鸡市| 临猗县| 鸡泽县| 沛县| 白河县| 汝阳县| 武邑县| 湘潭市| 岑巩县| 东台市| 鸡西市| 竹山县| 莱州市| 武宣县| 本溪市| 库伦旗| 农安县| 通山县| 北流市| 普兰县| 乌鲁木齐县|