分析:
獲取網頁中的資料可以成功爬取,但是在寫入txt操作的時候部分資料丟失。可能原因是scrapy框架是非同步爬取資料,所以寫入資料的時候不能完全寫入完整的資料。
解決方法:
一、**
# 開啟爬蟲前呼叫
defopen_spider
(self, spider)
: self.
file
=open
(r'novels/dhzmg.txt'
,'w'
, encoding=
'utf-8'
)# parse()返回值時呼叫,一般在這裡寫入資料
defprocess_item
(self, item, spider)
:try
: res =
dict
(item)
title = res[
'title'
] line = res[
'data'
] self.
file
.write(title+
'\n'
+line+
'\n\n'
)except
:pass
# 關閉爬蟲後呼叫,此處用於關閉檔案連線
defclose_spider
(self, spider)
: self.
file
.close(
)
說明:
- open_spider(): 開啟爬蟲前呼叫,可用於建立連線物件;
- close_spider():關閉爬蟲後呼叫,可以用於關閉檔案連線;
- process_item():此函式用於寫入資料操作,在parse()返回值的時候自動呼叫。
二、配置
使用pipeline.py檔案中的方法時,需要在setting.py
更改設定。
item_pipelines =
找到這個配置,取消前面的注釋即可。 使用scrapy框架把資料非同步寫入資料庫
在setting中設定mysql連線資訊 host 101.201.70.139 mysql dbname anttest mysql password myjr678 mysql user root 2 在pipeline中新增mysql非同步連線類from twisted.enterprise ...
使用scrapy框架爬蟲,寫入到資料庫
import scrapy class bossitem scrapy.item define the fields for your item here like name scrapy.field name scrapy.field 對應實體類的屬性 salary scrapy.field co...
爬蟲2 2 scrapy框架 檔案寫入
目錄 pipelines.py 前提回顧,spider.py中 data yield data import json class qsbkpipeline object def init self self.fp open qsbk.json w encoding utf 8 初始化檔案指標 de...