Scrapy簡易使用教程

一、創建項目

​ 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',
}
七、存入數據
  1. 導入剛纔設置的items.py

    from ..items import DoubanMoiveItem
    
  2. 在需要存入數據的地方實例化

    items = DoubanMoiveItem()
    
  3. 存入數據

    items['movie_name'] = movie_name
    items['nums'] = nums
    items['movie_url'] = response.url
    

    Ps: items字典中的key值movie_name、nums、movie_url需要與之前定義的一一對應

八、保存數據到文件
  1. 修改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()
    
  2. 修改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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章