简化scrapy爬虫

7 篇文章 0 订阅
5 篇文章 0 订阅

scrapy爬虫基本指令要点

英语词汇

genspider:生成爬虫 itcast:传智播客

itcast.cn:传智播客的网址 deploy:部署

pipeline:管道

1.安装scrapy

pip install scrapy

2.创建项目

scrapy startproject myspider1

在这里插入图片描述

3.查看新建项目的根目录

ls 在这里插入图片描述

cd myspider1
tree myspider1/
在这里插入图片描述

4.创建爬虫

scrapy genspider 爬虫名字 允许爬取的域名(url)

例子:

cd myspider1/ myspider1
scrapy genspider itcast itcast.cn

在这里插入图片描述

5.修改刚创建好的itcast文件中的源码

在这里插入图片描述

import scrapy

#定义爬虫类
class ItcastSpider(scrapy.Spider):
    # 定义爬虫的名字
    name = 'itcast'
    # 域名进行链接
    allowed_domains = ['itcast.cn']
    # 爬虫起始的url,一般是自己修改
    start_urls = ['http://itcast.cn/']

    # 定义解析。从中获取网址的数据!!
    # 定义对于网址的相关操作
    def parse(self, response): # response所对应的start_urls
        with open('itcase.html','wb') as f:
            f.write(response.body)

6.运行 scrapy

命令:在项目目录下执行scrapy crawl 爬虫名字

生成日志文件: scrapy crawl itcast #crawl :爬取
在这里插入图片描述

7.ls命令查看生成的html文件

在这里插入图片描述

8.完成爬虫

itcast.py内部的源码:

修改起始的url

检查修改允许的域名

在parse方法中实现爬取逻辑

#itcast.py
import scrapy

# =============================================================================

# #定义爬虫类

# =============================================================================

class ItcastSpider(scrapy.Spider):
    # 定义爬虫的名字
    name = 'itcast'
    #2.检查域名
    allowed_domains = ['itcast.cn']
    # 1.修改起始的url
    start_urls = ['http://www.itcast.cn/channel/teacher.shtml#javaee']
#3.在parse方法中实现爬取逻辑
def parse(self, response): # response所对应的start_urls

# =============================================================================

#         # 获取所有教师节点

# =============================================================================

        node_list = response.xpath('//div[@class="main_bot"]')


# =============================================================================

#         #遍历教师节点列表

# =============================================================================

 # print(len(node_list)) #测试使用
# 遍历每一个结点
for node in node_list:
    # 创建一个字典
    temp = {}
    #xpath方法返回的是选择器对象列表,extract()用于从选择器中提取数据
    temp['name'] = node.xpath('./h2/text()').extract_first()  #获取第一个值!!
    temp['title'] = node.xpath('./h3/./span/text()')[0].extract()
    temp['desc'] = node.xpath('./p/./span/text()').extract_first()

    # print(temp) #测试使用
    # break #测试使用
    
    #xpath结果为只含有一个值的列表,可以使用extract_first(),如果为多个值得则使用extract()
    yield temp #yield将获取的数据保存起来,并且还没有结束(可适用于获取不同页面的数据)

    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值