一、創建項目
scrapy startproject 項目名
二、創建爬蟲實例
scrapy genspider 實例名 目標網址
三、啓動爬蟲
1. 單個文件啓動:
scrapy runspider 實例名.py
2. 項目根目錄下運行
當前項目下可以運行的爬蟲:scrapy list
scrapy crawl 爬蟲名
四、取消scrapy的robot設置
ROBOTSTXT_OBEY = True
將True修改成False
五、確定需要獲取的內容
進入items.py 定義獲取的內容
class DoubanMoiveItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
movie_name = scrapy.Field()
nums = scrapy.Field()
movie_url = scrapy.Field()
六、修改 setting.py 添加User-Agent防止403
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
}
七、存入數據
-
from ..items import DoubanMoiveItem
-
在需要存入數據的地方實例化
items = DoubanMoiveItem()
-
存入數據
items['movie_name'] = movie_name items['nums'] = nums items['movie_url'] = response.url
Ps: items字典中的key值movie_name、nums、movie_url需要與之前定義的一一對應
八、保存數據到文件
-
修改pipelines.py文件,設置保存方式
示例:
class DoubanMoivePipeline(object): # 爬蟲開始調用 def open_spider(self, spider): self.file = open("items.json", 'w+', encoding="utf-8") def process_item(self, item, spider): self.file.write(str(item) + "\n") return item # 爬蟲結束調用 def close_spider(self, spider): self.file.close()
-
修改setting.py文件,將對應註釋取消(68-70行)
ITEM_PIPELINES = { 'douban_moive.pipelines.DoubanMoivePipeline': 300, }
九、保存數據到數據庫
修改pipelines.py 爲保存Mongodb
import pymongo
class DoubanMoivePipeline(object):
# 爬蟲開始調用
def __init__(self):
self.client = pymongo.MongoClient(host="127.0.0.1", port=27017)
self.db = self.client["test"]
self.col = self.db['douban_movie']
def process_item(self, item, spider):
data = dict(item)
if item:
self.col.insert_one(data)
return item