Scrapy爬虫自学笔记(一)

工作之余,多学习,补充技术不足。


    • 基础
    • css
      • 方式一
      • 方式二
      • 方式三
    • xpath
    • 完整的代码
      • 数据存储
    • 获取下一页
      • 方式一:绝对链接
      • 方式二:相对链接

基础

1、新建scarpy项目
打开cmd,切换到工作目录中
切换到工作目录

新建项目,命名为tutorial

scrapy startproject tutorial

Scrapy爬虫自学笔记(一)_第1张图片

2、创建新的爬虫任务

scrapy genspider example example.com

这里指的是爬取网站example.com,并将项目命名为example
Scrapy爬虫自学笔记(一)_第2张图片

3、写取数逻辑
以爬取quotes.toscrape.com为例,新建任务脚本quotes_spider.py, 逻辑写在quotes_spider.py 中。如提取网页内容:
Scrapy爬虫自学笔记(一)_第3张图片

4、运行

打开cmd,切换到该项目下,运行:

scrapy crawl quotes_spider

运行项目

5、shell 提取数据
使用shell是为了帮助我们更好的利用xpath和css来获取数据。
shell

注意:必须使用双引号

css

Scrapy爬虫自学笔记(一)_第4张图片

添加:: text , 是为了获取到<title>中的文本内容,extract() 用户提取数据

提取第一个结果或者结果

方式一

response.css('title::text').extract_first()

方式二

response.css('title::text')[0].extract()
注意:使用 **.extract_first()**  可以避免没有值的时候返回 **IndexError** 错误,同时返回 **None** 

方式三

采用正则化提取,re()
Scrapy爬虫自学笔记(一)_第5张图片

xpath

使用xpath提取数据
xpath

完整的代码

将上面使用css或xpath处理的逻辑写入脚本,代码如下:
Scrapy爬虫自学笔记(一)_第6张图片

数据存储

以存为json为例
存数据

获取下一页

<ul class="pager">
    <li class="next">
        <a href="/page/2/">Next <span aria-hidden="true">span>a>
    li>
ul>

下一页

方式一:绝对链接

response.urljoin是将两个拼接起来,构成完整的链接
Scrapy爬虫自学笔记(一)_第7张图片

方式二:相对链接

response.follow 支持相对链接方式
Scrapy爬虫自学笔记(一)_第8张图片

你可能感兴趣的:(Scrapy爬虫自学笔记(一))