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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章