Scrapy簡(jiǎn)介及其用法

Scrapy 框架
Scrapy是用純Python實(shí)現(xiàn)一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架,用途非常廣泛纪蜒。
框架的力量,用戶只需要定制開(kāi)發(fā)幾個(gè)模塊就可以輕松的實(shí)現(xiàn)一個(gè)爬蟲(chóng)此叠,用來(lái)抓取網(wǎng)頁(yè)內(nèi)容以及各種圖片霍掺,非常之方便。
Scrapy 使用了 Twisted['tw?st?d] 異步網(wǎng)絡(luò)框架來(lái)處理網(wǎng)絡(luò)通訊拌蜘,可以加快我們的下載速度,不用自己去實(shí)現(xiàn)異步框架牙丽,并且包含了各種中間件接口简卧,可以靈活的完成各種需求。
Scrapy架構(gòu)圖


5c17862075585.png

Windows 安裝方式
Python 3
升級(jí)pip版本:
pip3 install --upgrade pip
通過(guò)pip 安裝 Scrapy 框架
pip3 install Scrapy

Ubuntu 安裝方式
通過(guò)pip3 安裝 Scrapy 框架
sudo pip3 install scrapy
如果安裝不成功再試著添加這些依賴庫(kù):
安裝非Python的依賴
sudo apt-get install python3-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
安裝后烤芦,只要在命令終端輸入 scrapy举娩,提示類(lèi)似以下結(jié)果,代表已經(jīng)安裝成功


5bd6f1c48598d.png

創(chuàng)建語(yǔ)句

創(chuàng)建爬蟲(chóng)項(xiàng)目
scrapy startproject jobboleproject
新建爬蟲(chóng)文件
scrapy genspider jobbole jobbole.com
啟動(dòng)爬蟲(chóng)
scrapy crawl jobbole

item.py文件

import scrapy


class XiachufangspiderItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()
    img = scrapy.Field()
    yongliao = scrapy.Field()
    zuofa = scrapy.Field()
path = scrapy.Field()

pipelines.py文件

import json
import scrapy
from scrapy.pipelines.images import ImagesPipeline
from scrapy.utils.project import get_project_settings
import os

class XiachufangspiderPipeline(object):
    def __init__(self):
        self.f = open('xiachufang.json', 'a')
    def process_item(self, item, spider):
        self.f.write(json.dumps(dict(item), ensure_ascii=False)+'\n')
    return item

def close_spider(self, spider):
    self.f.close()
#把這個(gè)配置路徑拿到
IMAGES_STORE = get_project_settings().get('IMAGES_STORE')
#下載圖片
class XiachufangImgspiderPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        #發(fā)起圖片請(qǐng)求,把結(jié)果回調(diào)給item_completed
        return scrapy.Request(url=item['img'])

    def item_completed(self, results, item, info):
        # for ok,x in results:
        #     if ok:
        #          x['path']
     if imgs:
        os.rename(IMAGES_STORE + imgs[0],
                  IMAGES_STORE + item['name'] + '.jpg')
        item['path'] = os.getcwd() + '/' + IMAGES_STORE + item['name'] + '.jpg'
    else:
        item['path'] = ""
    return item

xiachufang.py文件

# -*- coding: utf-8 -*-
import scrapy
from XiachufangSpider.items import XiachufangspiderItem

class XiachufangSpider(scrapy.Spider):
    name = 'xiachufang'
    allowed_domains = ['xiachufang.com']
    start_urls = ['http://www.xiachufang.com/category/40076/']

def parse(self, response):
    div_list = response.xpath('//div[@class="pure-u-3-4 category-recipe-list"]//div[@class="normal-recipe-list"]//li')
    for div in div_list:
        url = div.xpath('.//p[@class="name"]/a/@href').extract_first('')
        print(url)

        yield scrapy.Request(url='http://www.xiachufang.com' + url, callback=self.parseDetail)


def parseDetail(self, response):
    item = XiachufangspiderItem()
    name = response.xpath('//h1/text()').extract_first('').replace('\n', '').strip()
    img = response.xpath('//div[@class="cover image expandable block-negative-margin"]/img/@src').extract_first('').replace('\n', '').strip()
    yongliao = ''.join(response.xpath('//tr/td//text()').extract()).replace('\n', '').replace(' ', '')
    zuofa = ''.join(response.xpath('//div[@class="steps"]//p/text()').extract())

    item['name'] = name
    item['img'] = img
    item['yongliao'] = yongliao
    item['zuofa'] = zuofa
    print(item)
    yield item
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末构罗,一起剝皮案震驚了整個(gè)濱河市铜涉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遂唧,老刑警劉巖芙代,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盖彭,居然都是意外死亡纹烹,警方通過(guò)查閱死者的電腦和手機(jī)页滚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铺呵,“玉大人裹驰,你說(shuō)我怎么就攤上這事∑遥” “怎么了幻林?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)音念。 經(jīng)常有香客問(wèn)我沪饺,道長(zhǎng),這世上最難降的妖魔是什么症昏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任随闽,我火速辦了婚禮,結(jié)果婚禮上肝谭,老公的妹妹穿的比我還像新娘掘宪。我一直安慰自己,他們只是感情好攘烛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布魏滚。 她就那樣靜靜地躺著,像睡著了一般坟漱。 火紅的嫁衣襯著肌膚如雪鼠次。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音洪鸭,去河邊找鬼迈喉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赦役,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栅炒,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼掂摔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赢赊?” 一聲冷哼從身側(cè)響起乙漓,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎释移,沒(méi)想到半個(gè)月后叭披,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玩讳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年趋观,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扛禽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡皱坛,死狀恐怖编曼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剩辟,我是刑警寧澤掐场,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站贩猎,受9級(jí)特大地震影響熊户,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吭服,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一嚷堡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艇棕,春花似錦蝌戒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至打瘪,卻和暖如春友鼻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闺骚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工彩扔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僻爽。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓借杰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親进泼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容