Scrapy快速上手
超详细官方教程解析
https://blog.csdn.net/fly_yr/article/details/51540269
实战过程:
- 创建一个Scrapy项目
- 定义提取的Item
- 编写爬取网站的 spider 并提取 Item
- 编写 Item Pipeline 来存储提取到的Item(即数据)
【1】创建Scrapy项目
scrapy startproject TestDemo
若进入到相应的文件目录下,在地址栏输入cmd进入命令行界面,输入以上命令,则会在相应的文件目录下建立一个项目

创建spider.py命令:scrapy genspider -t basic 名字 网址
也可以手动创建
运行爬虫时,在项目所在目录的地址栏cmd,进入,输入 scrapy crawl 爬虫名字;
否则可能会提示没找到该命令
其他相关命令

【2】定义Item容器

添加字段位置

先建模 //左是名字 右边是 占位符

【3】编写爬虫:


实现爬虫的python文件应该在spiders文件夹下

#def parse是回调函数,从Downloader返回response后,接受response而执行的方法;分别裁剪xx作为文件名,将网页的<body>内容保存至两个文件;
【3-1】爬“取”: ---------利用Xpath

XPath举例:

【3-2】重写spider的分析方法 【原方法是为了保存,验证用】

【4】将数据存放到Item容器中

【5】导出保存
scrapy crawl domz -o items.json -t json
#-o 指导出 后跟文件名字【需要后缀】
#-t 表示导出的格式,此处用json
#此处代码意思是,运行爬虫domz,并以json格式导出保存为items.json
实战中注意点:
1. 刚开始入门的时候,要爬取能爬的网站。。。有些是有反爬虫机制的,不然还会以为是代码错了导致没爬到数据
2. xpath() 中:
比如爬<html><head><title>xxx 的内容,
如果已经sites = sel.xpath('/html/head/title')
接下来用site = sites.xpath('text()').extract() 即可获取Selector对象的列表字符串化后的unicode字符串
而不是site = sites.xpath('/text()').extract() 或者 site = sites.xpath('title/text()').extract()
3.定义Item容器 中, 要和存放容器时使用的一致,不可无中生有


Scrapy快速上手的更多相关文章
- 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单
写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy….)wisted, zope interf ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 快速上手Unity原生Json库
现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- 快速上手seajs——简单易用Seajs
快速上手seajs——简单易用Seajs 原文 http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...
- Git版本控制Windows版快速上手
说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- Netron开发快速上手(二):Netron序列化
Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...
随机推荐
- qml: 另类图像轮播;
一般来说,图像轮播都是采用ListView等model进行设计, 比较方便. 这里展示我自己设计的图像轮播 方案, 仅采用两个QImage实现: 下面展示代码以及简述:(注: 以下代码为本人原创, ...
- linux下测试磁盘的读写IO速度-简易方法
linux下测试磁盘的读写IO速度-简易方法 参考资料:https://blog.csdn.net/zqtsx/article/details/25487185 一:使用hdparm命令 这是一个是用 ...
- Advertising.csv
TV,radio,newspaper,sales1,230.1,37.8,69.2,22.12,44.5,39.3,45.1,10.43,17.2,45.9,69.3,9.34,151.5,41.3, ...
- c++ hash_map/unordered_map 使用
C++中有很多中key-value形式的容器,map/hash_map/unordered_map/vector_map.下面讲述各个map的使用及其区别. map: #include <ios ...
- 再次回归 Spark-- 转
原文地址 combineByKey 三个参数 val scores = sc.parallelize(Array(("jake",80.0),("jake",9 ...
- java操作数据库:增删改查
不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...
- Socket编程 (一)
<<Linux 网络编程>>摘要 注意: 其中的大部分成员是网络字节序(大端字节序); 编程: 服务器先要做的事情: socket() 初始化Socket bind() 绑定本 ...
- Linux 用top命令查看CPU和内存使用情况
直接 top 回车 PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享 ...
- CSS样式选择
1:#a,b{…………}一个id叫a和一个标签是b的样式 2:#a b{…………}一个id叫a下面的一个标签是b的样式3:#a:b{…………}一个id叫a的伪类b的样式4:#a.b{…………}一个id ...
- json日期字符串格式化时间
var str = '/Date(1333245600000+0800)/'; function data_string(str) { var d = eval('new ' + str. ...