1.輸出不正確、改**結果不變?
其實是因為反覆使用命令
scrapy crawl spider -o 1.json
時候,增加的輸出資料不會覆蓋,而是繼續往後面新增。
2.request不執行
request(url,meta=,callback=self.parse2, dont_filter=true)
dont_filter=true讓allowed_domains失效了。但是改過了還是不行。
最終結果發現改的檔案和執行的檔案不一樣……
為什麼會這樣呢?我中間做了一部分實現了初始功能,就重新命名了備份,然而執行命令列竟然一直在執行備份檔案。
3.在使用 scrapy,pipeline 儲存 json等檔案時,在儲存/輸出中文時,會出現unicode碼
import json
import codecs
class filterwordspipeline(object):
def __init__(self):
# self.file = open('data.json', 'wb')
self.file = codecs.open(
'scraped_data_utf8.json', 'w', encoding='utf-8')
def process_item(self, item, spider):
line = json.dumps(dict(item), ensure_ascii=false) + "\n"
self.file.write(line)
return item
def spider_closed(self, spider):
self.file.close()
item_pipelines =
也就是在pipelines.py中將其改為預設utf-8開啟
4.如何在解析函式之間傳遞值?
一種常見的情況:在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)
def parse_item(self, response):
item = response.meta['item']
item['field'] = value
yield item
some experiences of usin
5.錯誤提示urlerror:.這個問題我想大家都會碰到的。解決方法是在spider.py檔案中加入兩句話就可以:
from scrapy import optional_features
optional_features.remove('boto')
6.from scrapy.spider import basespider
這句可能會報錯,是因為basespider是老版本的用法,應該使用新版本中的模組。在使用過程發現scrapy還是很智慧型的,會有相關提示應該怎樣替換。正確的匯入方法是:from scrapy.spiders import spider
7.屬性path
這是很多老教程的用法,現在使用會報錯,應該使用xpath或selector替換
8.一直提示 no module items
後來查詢資料是spiders目錄中的.py檔案不能和專案名同名。改個名字就行了。
layuiAdmin 常見問題與解決方案
由於單頁面版本的視 件和靜態資源模組都是動態載入的,所以可能存在瀏覽器的本地快取問題,事實上我們也考慮到這個,因此,為了避免改動後的檔案未及時生效,你只需在入口頁面 預設為start index.html 中,找到layui.config,修改其version的值即可。version new dat...
常見問題分析解決方案
一 線上問題排查 比如server有程序出現core 方法1 開啟coredump,生成core檔案,方便除錯 也可拉倒線下除錯 方法2 安裝tcpcopy,將線上流量導到線下機器進行進行除錯。方法3 分析是否有多執行緒其中的部分執行緒退出導致其他執行緒出core等等 比如線上流量很少,但是serv...
Git與Github常見問題與解決方案
本文介紹了在github中使用git常見的問題和解決方法,包括ssh配置,回滾,衝突解決等等內容。配置ssh key ssh keygen t rsa b 4096 c username mail.com 遇到提示不斷回車就行 找到生成的key cd ssh找到id rsa.pub這是你的rsa公鑰...