一、创建项目
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