scrapy爬蟲小案例

2022-08-27 16:12:14 字數 2412 閱讀 6245

在豆瓣圖書爬取書籍資訊為例(爬取下面劃紅線的資訊)

1.先建立乙個myspider專案(如何建立專案上面已經說過了)

2.開啟myspider目錄下的items.py

item 定義結構化資料字段,用來儲存爬取到的資料(因為要爬取的是兩行資訊,下面定義兩個變數來訪問字串)

#

-*- coding: utf-8 -*-

#define here the models for your scraped items##

see documentation in:

#import

scrapy

class

myspideritem(scrapy.item):

brief =scrapy.field()

quote = scrapy.field()

2.在terminal終端建立爬蟲

3.重寫myspider.py

#

-*- coding: utf-8 -*-

import

scrapy

from myspider.items import

myspideritem

#建立乙個爬蟲類

class

myspiderspider(scrapy.spider):

#爬蟲名

name = '

myspider'#

允許爬蟲作用的範圍(只能在你輸入的這個**爬取資訊)

allowed_domains = ['

']#爬蟲起始url

start_urls = ['

book/?utm_campaign=book_freyr_section&utm_source=douban&utm_medium=pc_web&page=1&page_num=18&']

defparse(self, response):

#with open('book.html', 'w') as f:

#f.write(response.body)

#通過scrapy自帶的xpath匹配出所有書的根節點

book_list = response.xpath('

//div[@class="book-brief"]')

bookitem =

#遍歷根節點集合 xpath返回的一定是列表

for each in

book_list:

item =myspideritem()

#extract() 將匹配出來的結果轉換為unicode字串

#無extract() 結果為xpath匹配物件

brief = each.xpath('

./h3/text()

').extract()

quote = each.xpath('

./div[@class="book-quote"]/p/text()

').extract()

item[

'brief

'] =brief[0]

item[

'quote

'] =quote[0]

#print(brief[0])

#print(quote[0])

return bookitem

4.在終端輸入

scrapy crawl myspider -o book.json  (爬取結果以json檔案形式輸出)

scrapy crawl myspider -o book.csv   (爬取結果以excel檔案形式輸出)

檔案輸出可能出現亂碼情況,就要修改上面**的編碼情況

5.進去可以檢視json檔案輸出內容

爬取成功

**過程中主要的問題一是不能手動建立scrapy檔案,必須使用終端,二是輸出結果有時是亂碼

我這次爬取的主要是一頁的內容,還不會爬取多頁的情況,繼續學習。

scrapy爬蟲簡單案例

進入cmd命令列,切到d盤 cmd d 建立article資料夾 mkdir articlescrapy startproject articlescrapy genspider xinwen www.hbskzy.cn 命令後面加爬蟲名和網域名稱 不能和專案名同名 items檔案 define h...

關於scrapy爬蟲的小知識

關於scrapy爬蟲的知識回顧 scrapy專案 myproject 通過此命令建立scrapy專案所在的資料夾 scrapy startproject mm myproject 真正的scrapy 專案 init.py 專案初始化資訊 items.py 專案資料結構化字典 類似於資料結構化 pip...

貼吧小爬蟲案例

如下 usr bin env python coding utf 8 import urllib import urllib2 def loadpage url,filename 作用 根據url傳送請求,獲取伺服器響應檔案 url 需要爬取的url位址 filename 處理檔名 request ...