scary运行流程
-
spiders网页爬虫
-
items项目
-
engine引擎
-
scheduler调度器
-
downloader下载器
-
item pipelines项目管道
-
middleware中间设备,中间件
scrapy下载
cmd —> pip install scarpy
scrapy项目创建
- 在python终端使用cd切换到项目路径
- 再使用 scarpy startproject ‘项目名称’来创建项目文件
- 创建文件后cd到文件夹中
- 再终端接着输入 scrapy genspider 项目名 需抓取的网站来创建项目
新建好的项目可在spiders文件中找到,创建好的文件夹和网站尽量不要修改
创建后目录大致页如下
创建好的db250项目中会自动生成这些内容
import scrapy
class Db250Spider(scrapy.Spider): #定义一个类
name = "db250"
allowed_domains = ["movie.douban.com"] #限制爬虫在哪些域名下进行请求 有些网站会外接其它网站
start_urls = ["https://movie.douban.com"] #可以自己改 只要在上面域名下就行
def parse(self, response):
pass
setting里数据修改
开始之前我们要先将setting里一些配置进行修改
- 将setting里的ROBOTSTXT_OBEY改为False,否则大部分情况下爬虫不能使用
- 在DEFAULT_REQUEST_HEADERS中加入伪装
items里数据设置
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html
import scrapy
class DbItem(scrapy.Item):
name = scrapy.Field()
rate = scrapy.Field()
commend = scrapy.Field() #以这种形式设置想要抓取的内容
db250代码
import scrapy
from db.items import DbItem
class Db250Spider(scrapy.Spider):
name = "db250"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/top250"]
def parse(self, response): #parse里只需关注如何解析,因为scrapy会自动去请求网址
#可以直接使用response
items=DbItem()
node_list=response.xpath('//div[@class="info"]')
print(node_list)
for i in node_list:
items['name']=i.xpath('./div/a/span/text()').get()
items['rate']=i.xpath('./div/div/span[@class="rating_num"]/text()').get()
items['commend'] = i.xpath('./div/p/span[@class="inq"]/text()').get()
yield items
#注意items[]中的内容要与items.py里的一一对应
项目运行
可以在终端中输入 scrapy crawl db250 使程序运行,但是使用终端运行不能提取数据,我们可以写一个新的py文件作为程序的入口来进行运行 -o db250.csv 表示输出位csv文件
from scrapy import cmdline
cmdline.execute('scrapy crawl db250 -o db250.csv'.split())
Scrapy爬虫框架,入门案例(非常详细)_scrapy爬虫案例-CSDN博客
这个博主写的非常详细!大家可以看看