python scrapy學習踩點

2021-06-22 20:05:51 字數 1862 閱讀 2338

內容很多,今天簡單學習了scrapy的資料抓取基本流程。

建立專案-更改items-寫spiders邏輯。

使用命令:scrapy startproject wo 建立名為wo的專案,結構如下:

c:.│  scrapy.cfg

│└─wo

│  items.py

│  pipelines.py

│  settings.py

│  __init__.py

│└─spiders

__init__.py

說明:scrapy.cft:專案配置檔案,暫時還沒學習怎麼使用。

items.py:items類似python的字典,在spider資料爬取邏輯實現後儲存資料時使用。

pipelines.py:管道,還沒學習怎麼用。

settings.py:專案配置,還沒學怎麼用。

__init__.py:暫時沒學怎麼使用

spiders:spider資料爬取邏輯就在這個目錄下實現。

修改items.py:

# define here the models for your scraped items

## see documentation in:

# from scrapy.item import item, field

class woitem(item):

title=field()

link=field()

desc=field()

增加woppider.py:

**說明:

basespider屬性:
name:爬蟲名字,必須唯一。
start_urls:定義爬取的開始網頁位址列表。

parse方

法:response有且只有乙個引數。

htmlxpathselector使用了xpath來解析資料

//ul/li表示選擇所有的ul標籤下的li標籤

a/@href表示選擇所有a標籤的href屬性

a/text()表示選擇a標籤文字

a[@href="abc"]表示選擇所有href屬性是abc的a標籤

為了方便使用xpaths,scrapy提供xpathselector 類, htmlxpathselector (html資料解析) 和xmlxpathselector (xml資料解析)。 

為了使用他們你必須通過乙個 response 物件對他們進行例項化操作。你會發現selector物件展示了文件的節點結構。

因此,第乙個例項化的selector必與根節點或者是整個目錄有關 。 

selectors 有三種方法

select():返回selectors列表, 每乙個select表示乙個xpath引數表示式選擇的節點.

extract():返回乙個unicode字串,該字串為xpath選擇器返回的資料

re(): 返回unicode字串列表,字串作為引數由正規表示式提取出來

scrapy crawl wo -o items.json -t json

所有抓取的items將以json格式被儲存在新生成的items.json 檔案中

語法解釋部分基本都是參考網上教程整理,我這裡只說自己操作過程中遇到的問題:

1、行縮排的問題

參考網上**過程中可能有些不可見字元,導致除錯一直報錯,最後才發現縮排有問題。

2、wospider中定義的name,必須唯一,呼叫的時候就是取這個name='wo'值。

3、類名wo與spider的檔名「wospider」不能一樣,否則import wo工程下的items模組會報錯。這裡我除錯了很久才發現。

Python Scrapy 爬蟲踩過的坑(一)

一 debug crawled 200 具體報錯資訊如下圖所示 1.200為http 狀態碼,代表訪問ok。2.但是設定的正則的返回的爬取資訊為 也有可能是正規表示式的設定出錯 js介面的原因 二 overridden setting 主要報錯資訊如下圖所示 建立爬蟲檔案的時候,scrapy gen...

python scrapy開源專案學習

這個專案的架構不是怎麼複雜,但作為python的初學者,看到這個專案的這麼多 徹底暈了。俗話說,萬事開頭難,確實,開始不知如何下手,如何定製符合自己需求的蜘蛛。只知道建立乙個工程,但工程的各個模組的作用是什麼,如何把這些模組組成乙個整體,讓它真正的發揮作用。好吧,此時最笨的方法是去瞧瞧源 追蹤程式的...

python Scrapy框架爬蟲入門學習

改寫parse 方法,對response變數包含的內容解析。scrapy 提供的 feed exports 可以輕鬆將抓取結果輸出。支援輸出格式 json csv xml pickle marshal 等,還支援 ftp s3 等遠端輸出。scrapy crawl spi o spi.json sc...