一.首先簡單了解scrapy的架構
官方給出的解釋:
spiders:spider是scrapy使用者編寫用於分析response並提取item(即獲取到的item)或額外跟進的url的類。 每個spider負責處理乙個特定(或一些)**。
item pipeline:item pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如訪問到資料庫中)。。
spider中介軟體:spider是在引擎及spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了乙個簡便的機制,通過插入自定義**來擴充套件scrapy功能。。
使用scrapy爬取的過程如下:
二. 建立scrapy專案
首先我們需要建立乙個scrapy專案,開啟命令列,進入到要儲存**的位置的根目錄下,執行這條指令
scrapy startproject ******
這裡需要輸入你給該專案所取的名稱。
執行了該指令之後會自動建立乙個資料夾,名稱為你對這個專案所取的名稱。
其中包括
各檔案作用:
scrapy.cfg: 專案的配置檔案。
items.py: 專案中的item檔案,定義了儲存資料的欄位名。
pipelines.py: 專案中的pipelines檔案。
settings.py: 專案的設定檔案。
spiders: 放置spider**的目錄。(主要在這裡做文章)
三、實現爬爬爬!
選擇所想爬取的**,從命令列進去到該專案中執行
scrapy genspider quotes quotes.toscrape.com
執行完成後會在spider資料夾中自動生成乙個quotes.py檔案
其**為
import scrapy
class quotesspider (scrapy.spider)
name = 'quotes'
allowed_domains = ['quotes.toscrape.com'
start_urls = ['']
def parse(self,response):
pass
import scrapy
class quotesspider(scrapy.spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
def start_requests(self):#名稱不要變
for page in range(20):
url = 'page/{}/'.format(page)
yield scrapy.request(url=url,callback=self.parse)
def parse(self, response):#名稱不要變
page= response.url.split('/')[-2]
#可以得到目前**的頁碼
file_name = 'quotes-{}.txt'.format(page)
with open(file_name,'wb') as f:
quotes = response.css('.quote')
for index,quote in enumerate(quotes):
#進行對應的排序 0 quote[0] quote[1]
text = quote.css('span.text::text').extract_first()
#將內容以文字形式提取出來
author = quote.css('small.author::text').extract_first()
tags = quote.css('.tags .tag::text').extract()
f.write("no.{}".format(index+1).encode())
#輸出no.1 2 3 4....
f.write('\r\n'.encode())
#換行f.write(text.encode())
f.write("\r\n".encode())
f.write("by{}".format(author).encode())
f.write("\r\n".encode())
tags_str = ''
for tag in tags:
tags_str += tag + ","
tags = tag[0:-2]
f.write(("tags:"+tags).encode())
#這樣在結尾就不會有','
f.write("\r\n".encode())
f.write(("-"*20).encode())
f.write("\r\n".encode())
text = quote.css('span.text::text').extract_first()
span.text是定位到了 具有span class ='text』屬性的資料
.extract_first()=.extract()[0]可以提取出第乙個節點
接下來就是最激動人心的時刻 /手動滑稽
在命令列進入到根目錄下,執行這行**:
scrapy crawl quotes
如果沒有錯誤,靜等片刻,開啟到資料夾中,會生成.txt檔案:
內容如下:
這樣基本的一次使用scrapy算是大功告成。
scrapy簡單爬蟲
coding utf 8 這只是爬蟲檔案內容,使用pycharm執行,在terminal中使用命令列,要用爬蟲名字 import scrapy from insist.items import insistitem class insistsspider scrapy.spider name ins...
scrapy爬蟲簡單案例
進入cmd命令列,切到d盤 cmd d 建立article資料夾 mkdir articlescrapy startproject articlescrapy genspider xinwen www.hbskzy.cn 命令後面加爬蟲名和網域名稱 不能和專案名同名 items檔案 define h...
網路爬蟲框架 Scrapy
網路爬蟲框架 scrapy 簡介 開源的python爬蟲框架,用於抓取web站點並從頁面中提取結構化的資料 用途廣泛,可用於資料探勘 監測和自動化測試 scrapy優點 快速強大 量簡潔便可完成爬取 易擴充套件 可新增新的功能模組 scrapy高階特性 內建資料抽取器css xpath re 互動式...