安裝scrapy
不同操作系統(tǒng)安裝操作不同,可以直接看官方文檔Install Scrapy
創(chuàng)建一個(gè)項(xiàng)目在命令行輸入
scrapy startproject tutorial
進(jìn)入項(xiàng)目目錄創(chuàng)建一個(gè)spider
cd tutorial scrapy genspider quotes domain.com
import scrapy class QuotesSpider(scrapy.Spider): name = "quotes" def start_requests(self): urls = [ "http://quotes.toscrape.com/page/1/", "http://quotes.toscrape.com/page/2/", ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): page = response.url.split("/")[-2] filename = "quotes-%s.html" % page with open(filename, "wb") as f: f.write(response.body) self.log("Saved file %s" % filename)
運(yùn)行scrapy,在項(xiàng)目頂級(jí)目錄下輸入命令
scrapy crawl quotes
在QuotesSpider這個(gè)類(lèi)里,name指明spider的名稱(chēng),在start_requests函數(shù)里發(fā)出請(qǐng)求,用parse函數(shù)處理請(qǐng)求返回的結(jié)果,start_requests函數(shù)可以替換為start_urls列表,scrapy會(huì)自動(dòng)幫我們發(fā)出請(qǐng)求,并默認(rèn)用parse函數(shù)處理,還可以設(shè)置一些其它參數(shù),詳見(jiàn)Document
選擇器用法scrapy內(nèi)置css選擇器和xpath選擇器,當(dāng)然你也可以選擇使用其他的解析庫(kù),比如BeautifulSoup,我們簡(jiǎn)單用scrapy shell展示一下scrapy內(nèi)置選擇器的用法,在命令行中輸入
scrapy shell https://docs.scrapy.org/en/latest/_static/selectors-sample1.html
示例代碼
Example website
# 獲取標(biāo)題 # selector可以去掉 # extract返回的是列表 response.selector.xpath("http://title/text()").extract_first() response.selector.css("title::text").extract_first() # 獲取a標(biāo)簽里href參數(shù)內(nèi)容 response.xpath("http://a/@href").extract() response.css("a::attr(href)").extract() # 混合獲取img標(biāo)簽的src屬性 response.xpath("http://div[@id="images"]").css("img::attr(src)").extract() # 獲取a標(biāo)簽中包含image的href屬性 response.xpath("http://a[contains(@href, "image")]/@href").extract() response.css("a[href*=image]::attr(href)").extract() # 使用正則表達(dá)式 response.css("a::text").re("Name:(.*)") response.css("a::text").re_first("Name:(.*)") # 添加default參數(shù)指定默認(rèn)提取信息 response.css("aa").extract_first(default="")Item Pipeline用法
通過(guò)parse處理函數(shù)返回的Item可以用Item Pipeline進(jìn)行加工處理,主要是數(shù)據(jù)清洗,格式化。
# 過(guò)濾掉相同的item class DuplicatePipeline(object): def __init__(self): self.items = set() def process_item(self, item, spider): if item["id"] in self.items: raise DropItem("Duplicate item found: %s" % item["id"]) else: self.items.add(item["id"]) return item
需要在settings里的注冊(cè)一下自定義的Pipeline
ITEM_PIPELINES = { "tutorial.pipelines.TutorialPipeline": 300, "tutorial.pipelines.DuplicatePipeline": 200, }
數(shù)字越小,優(yōu)先級(jí)越高
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43235.html
摘要:楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲(chóng)軟件定制開(kāi)發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類(lèi)信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲(chóng)學(xué)習(xí)系列教程(來(lái)源于某博主:htt...
摘要:爬蟲(chóng)是我接觸計(jì)算機(jī)編程的入門(mén)。練練練本文推薦的資源就是以項(xiàng)目練習(xí)帶動(dòng)爬蟲(chóng)學(xué)習(xí),囊括了大部分爬蟲(chóng)工程師要求的知識(shí)點(diǎn)。拓展閱讀一文了解爬蟲(chóng)與反爬蟲(chóng)最后,請(qǐng)注意,爬蟲(chóng)的工作機(jī)會(huì)相對(duì)較少。 爬蟲(chóng)是我接觸計(jì)算機(jī)編程的入門(mén)。哥當(dāng)年寫(xiě)第一行代碼的時(shí)候別提有多痛苦。 本文旨在用一篇文章說(shuō)透爬蟲(chóng)如何自學(xué)可以達(dá)到找工作的要求。 爬蟲(chóng)的學(xué)習(xí)就是跟著實(shí)際項(xiàng)目去學(xué),每個(gè)項(xiàng)目會(huì)涉及到不同的知識(shí)點(diǎn),項(xiàng)目做多了,自然...
摘要:下面代碼會(huì)存在什么問(wèn)題,如何改進(jìn)一行代碼輸出之間的所有偶數(shù)。簡(jiǎn)述進(jìn)程之間如何通信多路復(fù)用的作用模型的區(qū)別什么是并發(fā)和并行解釋什么是異步非阻塞的作用面試題說(shuō)說(shuō)你知道的命令如何查看某次提交修改的內(nèi)容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關(guān)的面試題,從大量的題目中總結(jié)了很多的知識(shí),同時(shí)也對(duì)一些題目進(jìn)行拓展了,但是在看了網(wǎng)上的大部分面試題不...
摘要:是最有名的爬蟲(chóng)框架之一,可以很方便的進(jìn)行抓取,并且提供了很強(qiáng)的定制型,這里記錄簡(jiǎn)單學(xué)習(xí)的過(guò)程和在實(shí)際應(yīng)用中會(huì)遇到的一些常見(jiàn)問(wèn)題一安裝在安裝之前有一些依賴(lài)需要安裝,否則可能會(huì)安裝失敗,的選擇器依賴(lài)于,還有網(wǎng)絡(luò)引擎,下面是下安裝的過(guò)程下安裝安裝 scrapy是python最有名的爬蟲(chóng)框架之一,可以很方便的進(jìn)行web抓取,并且提供了很強(qiáng)的定制型,這里記錄簡(jiǎn)單學(xué)習(xí)的過(guò)程和在實(shí)際應(yīng)用中會(huì)遇到的一...
閱讀 1263·2021-11-08 13:25
閱讀 1452·2021-10-13 09:40
閱讀 2783·2021-09-28 09:35
閱讀 748·2021-09-23 11:54
閱讀 1139·2021-09-02 15:11
閱讀 2446·2019-08-30 13:18
閱讀 1681·2019-08-30 12:51
閱讀 2697·2019-08-29 18:39