环境
- Python 3.7.4
- pip 19.3.1
- Scrapy 1.8.0
安装 Scrapy
// 使用 pip 命令查看 python包的安装目录
pip --version
// c:\users\eminxta\appdata\local\programs\python\python37-32\lib\site-packages\
// 查看目录下有没有 Scrapy 包
// 安装命令
pip install scrapy
// 安装完之后会看到依赖了很多包
创建项目
scrapy startproject scrapyone
目录结构
编写项目
- 编写一个 spider 去获取网站 quotes.toscrape.com 的内容
- 打开 quotes.toscrape.com 网站观察 html 源码,关键信息是:(1)名言,(2)作者,(3)标签,(4)下一页。需求是获取所有关键信息,并且自动获取下一页
// 名言
<div class="quote" ...
<span class="text" ...
"名言XXXX"
// 作者
<span>
<small class="author">
timing
// 标签
<div class="tags">
<a class="tag" href="XXXX">
<a class="tag" href="xxxx">
// 下一页
<nav>
<ul class="pager">
<li class="next">
<a href="下一页">
- 添加文件 /spiders/quotes_spider.py
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/'
]
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').extract_first(),
'author': quote.css('small.author::text').extract_first(),
'tags': quote.css('div.tags a.tag::text').extract_first(),
}
next_page = response.css('li.next a::attr(href)').extract_first()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
运行项目
在项目的根目录 /scrapyone 运行一下命令
//命令, 指定 spider 的名字, 输出结果
scrapy crawl quotes -o quotes.json
在当前项目目录下会有个一个 quotes.json 的结果文件