scrapy中遇到的問題與解決

2021-07-26 08:04:26 字數 2844 閱讀 6956

scrapy,python開發的乙個快速,高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。

因為好像這個用的比較多,所以看看用這個框架該怎麼寫爬蟲。其實不難,但是中間出了很多神奇的小問題。

其實是因為反覆使用命令

scrapy crawl spider -o

1.json

時候,增加的輸出資料不會覆蓋,而是繼續往後面新增。

找了半天不知道為啥,其中乙個比較靠譜的是

request(url,meta=,callback=self.parse2, dont_filter=true)
dont_filter=trueallowed_domains失效了。但是改過了還是不行。

最終結果發現改的檔案和執行的檔案不一樣……

為什麼會這樣呢?我中間做了一部分實現了初始功能,就重新命名了備份,然而執行命令列竟然一直在執行備份檔案。。

更改pipeline檔案。

import json

import codecs

class

webpipeline

(object):

# def process_item(self, item, spider):

# return item

def__init__

(self):

# self.file = open('data.json', 'wb')

self.file = codecs.open(

'scraped_data_utf8.json', 'w', encoding='utf-8')

defprocess_item

(self, item, spider):

line = json.dumps(dict(item), ensure_ascii=false) + "\n"

self.file.write(line)

return item

defspider_closed

(self, spider):

self.file.close()

item_pipelines =
scrapy抓取到中文,儲存到json檔案為unicode,如何解決

一種常見的情況:在parse中給item某些字段提取了值,但是另外一些值需要在parse_item中提取,這時候需要將parse中的item傳到parse_item方法中處理,顯然無法直接給parse_item設定而外引數。 request物件接受乙個meta引數,乙個字典物件,同時response物件有乙個meta屬性可以取到相應request傳過來的meta。所以解決上述問題可以這樣做:

def

parse

(self, response):

# item = itemclass()

yield request(url, meta=,callback=self.parse_item)

defparse_item

(self, response):

item = response.meta['item']

item['field'] = value

yield item

some experiences of using scrapy

# setting.py

item_pipelines = ['demo.pipelines.myimagespipeline'] # imagepipeline的自定義實現類

images_store = 'd:\\dev\\python\\scrapy\\demo\\img'

# 儲存路徑

images_expires = 90

# 過期天數

images_min_height = 100

# 的最小高度

images_min_width = 100

# 的最小寬度

# 的尺寸小於images_min_width*images_min_height的都會被過濾

from scrapy.contrib.pipeline.images import imagespipeline

擴充套件media pipeline

Scrapy安裝遇到問題解決

win10平台 安裝scrapy遇到一些問題 1.本來使用命令 pip install scrapy2.然而我安裝了py2.x 和 py3.x 版本所有,所以使用該命會報錯,所以使用命令 我python3 為預設版本,py2名稱為python2 python m pip install scrapy...

Scrapy 簡單爬蟲中遇到的問題總結

在進行item傳參時總是出現重複資料 在scrapy資料爬取中發現通過以下語句傳遞的引數會出現重複現象,導致爬取的資料出現重複和錯亂的現象。yield scrapy.request item url meta callback self.detail parse 為了解決以上問題,找到 scrapy...

python遇到的問題與解決

1 no module named requests 解決方法 解決方法 由於我安裝的python的時候,也選擇安裝了pip,所以這裡只分享自己實踐過的方式。我的python安裝的目錄是d python cmd cd d python pip install requests 等待系統自動載入安裝。...