赞
踩
Scrapy是一个强大、灵活、可扩展的爬虫框架,由于其高效的数据抓取和处理能力,被广泛应用于互联网数据抓取、处理和存储等领域。Scrapy采用事件驱动和异步IO的机制,具有自动请求处理和多线程爬取的特点,支持自定义扩展和中间件,可以方便地进行反反爬虫处理。
Scrapy官方网站提供详细的安装指南,您可以参考以下步骤进行安装:
具体命令如下:
- # 使用pip安装Scrapy
- pip install scrapy
-
- # 使用conda安装Scrapy
- conda install scrapy
在命令行中使用以下命令创建Scrapy项目:
scrapy startproject toutiao
其中,toutiao
是项目名称,执行命令后,将会生成以下目录结构:
- .
- ├── scrapy.cfg
- └── toutiao
- ├── __init__.py
- ├── items.py
- ├── middlewares.py
- ├── pipelines.py
- ├── settings.py
- └── spiders
- ├── __init__.py
- └── ...
其中,scrapy.cfg
为Scrapy配置文件,toutiao
是项目名称,items.py
定义了项目中需要爬取的数据结构,middlewares.py
定义了中间件配置,pipelines.py
定义了数据处理管道,settings.py
为Scrapy的配置文件,spiders
目录用于存放爬虫脚本。
在spiders
目录中创建toutiao_spider.py
文件,并按照以下写法编写爬虫脚本:
- import scrapy
- from toutiao.items import ToutiaoItem
-
- class ToutiaoSpider(scrapy.Spider):
- name = 'toutiao'
- allowed_domains = ['toutiao.com']
- start_urls = ['https://www.toutiao.com/ch/news_hot/']
-
- def parse(self, response):
- item = ToutiaoItem()
- # 获取前10条新闻
- for news in response.css('.title-box'):
- title = news.css('.title::text').extract_first()
- url = news.css('.link::attr(href)').extract_first()
- item['title'] = title
- item['url'] = url
- yield item
该脚本通过继承scrapy.Spider
类来定义一个新的爬虫,其中name
属性定义了爬虫名称,allowed_domains
定义了允许爬取的域名,start_urls
定义了起始爬取链接。parse
方法是Scrapy的默认回调函数,用于解析爬取的网页数据,此处我们将获取前十条新闻的标题和链接,并使用yield
关键字将数据传递给后续的处理管道。
为了保存爬取的数据,需要在toutiao
目录下创建items.py
文件,并按照以下写法定义数据结构:
- import scrapy
- class ToutiaoItem(scrapy.Item):
- title = scrapy.Field()
- url = scrapy.Field()
该文件定义了一个新的数据结构,可以通过定义多个scrapy.Field()
来保存不同的数据。
在命令行中使用以下命令运行Scrapy爬虫:
scrapy crawl toutiao -o news.json
其中,-o news.json
表示将爬取结果保存
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。