本文学习自:https://www.urlteam.org/2016/06/scrapy-%E5%85%A5%E9%97%A8%E9%A1%B9%E7%9B%AE-%E7%88%AC%E8%99%AB%E6%8A%93%E5%8F%96w3c%E7%BD%91%E7%AB%99/

由于原作者用的是python2. 所以本人在用python3.6尝试时遇到不少坑。

1.创建项目 

$ scrapy startproject w3school

创建完之后会有这几个文件:

2.定义Item容器

from scrapy.item import Item,Fieldclass W3schoolItem(Item):title = Field()link = Field()desc = Field()
爬到的信息会按照这几项存起来

3.pipeline.py
pipeline是对爬到的数据进行处理(查重、丢弃,储存)的地方。
# -*- coding:utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport json
import codecs
import stringclass W3SchoolPipeline(object):def __init__(self):self.file = codecs.open('w3school_data_utf8.json','wb', encoding='utf-8')#‘wb’表示写入bytes,参数需要加上encoding='utf-8',因为写入需要二进制码,encoding可以生成二进制码def process_item(self, item, spider):

 #将数据写入json里面self.file.write(line)return item

为了启动pipeline,需在setting里面加入:

4.spider爬虫代码

爬虫代码相对容易理解,就是用xpath找出你要爬的数据的位置,然后抽取出来,放到item[]容器里面

# !/usr/bin/python
# -*- coding:utf-8 -*-from scrapy.spiders import Spider #python2是scrapy.spider
from scrapy.selector import Selector
from w3school.items import W3schoolItemclass W3schoolSpider(Spider):
    #这个名字就是待会运行爬虫的名字name = "w3school"allowed_domains = ["w3school.com.cn"]start_urls = ["http://www.w3school.com.cn/xml/xml_syntax.asp"]def parse(self, response):sel = Selector(response)sites = sel.xpath('//div[@id="navsecond"]/div[@id="course"]/ul[1]/li')items = []for site in sites:item = W3schoolItem()title = site.xpath('a/text()').extract()link = site.xpath('a/@href').extract()desc = site.xpath('a/@title').extract()item['title'] = title #直接放到容器里就好了,不用像python2一样编码item['link'] = linkitem['desc'] = descitems.append(item)return items
5.运行爬虫

在你项目的目录下:
$ scrapy crawl w3school
用记事本打开你在项目文件夹里所建立的
w3school_data_utf8.json
就可以看到



搞腚!d=====( ̄▽ ̄*)b

ITEM_PIPELINES = {'w3school.pipelines.W3SchoolPipeline': 300,
}
    #加上参数ensure_ascii=False,生成的json里面就可以显示中文啦!
        line = json.dumps(dict(item),ensure_ascii=False)+ '\n'        #print (line)

Scrapy学习笔记 爬取w3school相关推荐

  1. 西山小菜鸟之Scrapy学习笔记---爬取企查查网公司的裁判文书信息

    前言 本文接着上文,爬取企查查的公司裁判文书信息.企查查  本文中若存在不详细的地方欢迎各位大神网友提问,若有错误的地方,希望大家指正.谢谢!! ? ? 粗略分析 点击进入要查询的公司可以进入该公司的 ...

  2. 西山小菜鸟之Scrapy学习笔记---爬取企查查网站公司基本信息

    前言 本文主要采取cookie登录的方式爬取企查查网站的公司的基本信息,后期会继续发布关于爬取企查查网站上的公司的裁判文书信息.链接为:企查查  本文中若存在不详细的地方欢迎各位大神网友提问,若有错误 ...

  3. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

  4. Python scrapy学习之爬取2k唯美壁纸详细过程笔记及讲解

    Scrapy 学习爬取图片 Scrapy 爬取图片时候绕了很多圈子,才明白了走了很大的弯路,幸亏绕出来了(大话可能说得有点早~),赶紧记录一下心得体会: 创建爬虫时的参数选择: 一是普通创建爬虫法: ...

  5. Scrapy框架学习笔记 - 爬取腾讯招聘网数据

    文章目录 一.Scrapy框架概述 (一)网络爬虫 (二)Scrapy框架 (三)安装Scrapy框架 (四)Scrapy核心组件 (五)Scrapy工作流程 二. Scrapy案例演示 (一)爬取目 ...

  6. Python学习笔记-爬取B站电视剧《风犬少年的天空》弹幕并分析

    爬取B站电视剧<风犬少年的天空>弹幕并分析 写在前面 开始! 简单分析一下弹幕数据 蠢并痛苦着的学习过程... 干(烂)货环节-------弹幕的获取与整理 关于cid的获取 关于弹幕上限 ...

  7. scrapy学习之爬取顶点小说数据(转)

    1.爬取网站 https://www.x23us.com 2.转出处 https://cuiqingcai.com/3472.html 3.遇到的问题 3.1 mysql的模块导入问题 修改为pymy ...

  8. 爬虫学习笔记--爬取静态网页

    声明:我这里是学习 唐松老师的<Python网络爬虫从入门到实践>的学习笔记 只是记录我自己学习的过程  详细内容请购买老师正版图书 import requestsr = requests ...

  9. python海贼王logo_Python 学习笔记---爬取海贼王动漫

    最近无聊整理的爬虫代码,可以自动爬取腾讯动漫的任意漫画,思路如下: 1. 先获取想下载的动漫url, 这里用了 getUrls ,直接获取动漫的最后一章 2. 然后进入到该动漫去获取要下载的图片url ...

最新文章

  1. 绩效管理误区和乱象,你的企业存在吗?
  2. Linux目录是否是否为空,在Linux上使用C检查目录是否为空
  3. 前端控制器html,DispatcherServlet(前端控制器)访问顺序和url匹配规则
  4. python获取excel某一列所有值-Python读取Excel一列并计算所有对象出现次数的方法...
  5. slf4j + logback 输出日志:mybatis sql语句
  6. 如何在Chrome工具栏中固定和取消固定扩展程序
  7. 为IoT和大数据项目分配IT资源
  8. FastHook——实现.dynsym段和.symtab段符号查询
  9. 航天信息上传参数设置服务器设置,金税盘上传参数怎么设置?
  10. stm32F103+EncEthernet+ENC28J60驱动+ping
  11. RN综合演练,仿美团电商(谢谢你的STAR)
  12. 数据分析之房价预测(机器学习,sklearn)
  13. Excel中 VLOOKUP 函数的使用
  14. 约瑟夫问题和又遇约瑟夫问题
  15. 小白读odoo参考手册--字段
  16. 我走了,青春留给北京
  17. linux 合并视频文件,视频剪切合并器VideoCutter 5.0 发布(附Ubuntu 17.10中安装方法)...
  18. coreldraw x7怎样设置禁网_怎样设置文件禁止访问网络
  19. ckeditor4 php,dedecms升级最新版CKEditor4.15教程
  20. 三轴桁架机械手控制系统 用于数控车床自动上下料 信捷触摸屏程序

热门文章

  1. angularjs表单验证_AngularJS表单验证
  2. Centos 7.6 下使用美格SLM750(4G模块)拨号上网
  3. 博瑞云音箱云喇叭开发文档API接口文档开发指南(21-12-20)
  4. 开发购物商城app系统软件需要多少钱
  5. 我用加强版RFM模型,轻松扒出B站优质up主!(含数据+实战代码)
  6. VirtualAPK 报错: Failed to notify project evaluation listener. > SDK location not found. Define locati
  7. CENTOS7 安装eclipse应用
  8. 智能车K60学习笔记
  9. Yoga C930 NM-B741 EYG70 Ariel-SVT REV 1.0联想笔记本图纸
  10. 浙江大学mooc的数据结构_课后习题01-复杂度2 Maximum Subsequence Sum