scrapy,python開發的乙個快速,高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。因為好像這個用的比較多,所以看看用這個框架該怎麼寫爬蟲。其實不難,但是中間出了很多神奇的小問題。
其實是因為反覆使用命令
scrapy crawl spider -o
1.json
時候,增加的輸出資料不會覆蓋,而是繼續往後面新增。
找了半天不知道為啥,其中乙個比較靠譜的是
request(url,meta=,callback=self.parse2, dont_filter=true)
dont_filter=true
讓allowed_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 等待系統自動載入安裝。...