scrapy 爬虫基础
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
安装Scrapy的过程比较复杂而且容易出错,贴出一个参考链接:windows下scrapy安装步骤。
安装完成后,在自定义目录下输入
scrapy startproject Project_Name //创建新爬虫项目
scrapy genspider -t crawl Crawl_Name Url_addr//创建爬虫,模板,爬虫名和待爬网址
Scrapy内置的爬虫模板可使用:scrapy genspider -l 来查询,查询结果如下:包括basic crawl csvfeed xmlfeed四种类型。

使用以上命令后,便会在目录中自动生成爬虫项目,包含的内容如下图:

分别代表的意义为:
scrapy.cfg:项目的配置文件
jd_crawling/:项目的Python模块,将会从这里引用代码
jd_crawling/items.py:项目的items文件
jd_crawling/pipelines.py:项目的pipelines文件 (pipeline意为管道,即将数据传递过来进行储存或处理)
jd_crawling/settings.py:项目的设置文件
jd_crawling/spiders/:存储爬虫的目录
进入目录中,在item中定义待爬的关键字(target),目的是封装进Item中,做为整个项目的一个对象进行引用和处理
class JdCrawlingItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
goods_name = scrapy.Field()#定义商品名称
goods_link = scrapy.Field()#定义商品链接
items创建完成后进入spider创建爬虫规则:先爬,再取。可以看到在子佛那个创建的项目中已经为我们自动创建了一些内容:
class JdUrlSpider(CrawlSpider):
name = 'jd_url' #爬虫的识别名称,必须唯一
allowed_domains = ['jd.com'] # 允许执行的url范围
start_urls = ['http://www.jd.com/'] # 爬取的URL列表
创建匹配规则:
def parse_item(self, response): #解析的方法,调用的时候传入从每一个URL传回的Response对象作为唯一参数,负责解析并匹配抓取的数据(解析为item)
item = JdCrawlingItem() #此处便引用了之前定义的item
item['goods_name'] = response.xpath("//a[@class='pic']/@title").extract()
item['goods_link'] = response.xpath("//a[@class='pic']/@href").extract()
print(item['goods_name'])
xpath的使用方法详见:关于scrapy网络爬虫的xpath书写经验总结
最后执行:scrapy crawl jd_url 则可以开始我们的爬虫了。
这是最基本的爬虫,之后还会涉及到:1通过pipeline 写进数据库(pymsql)2突破反爬虫限制3爬虫数据分析和处理等内容。会在接下来的内容中完善
scrapy 爬虫基础的更多相关文章
- 小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(34):爬虫框架 Scrapy 入门基础(二)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(35):爬虫框架 Scrapy 入门基础(三) Selector 选择器
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(36):爬虫框架 Scrapy 入门基础(四) Downloader Middleware
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(37):爬虫框架 Scrapy 入门基础(五) Spider Middleware
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(38):爬虫框架 Scrapy 入门基础(六) Item Pipeline
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(40):爬虫框架 Scrapy 入门基础(七)对接 Selenium 实战
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(41):爬虫框架 Scrapy 入门基础(八)对接 Splash 实战
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 爬虫入门之Scrapy 框架基础功能(九)
Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...
随机推荐
- Python自动化--语言基础3--字典、函数、全局/局部变量
字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values ...
- Linux socket 类封装 (面向对象方法)
/* * socketfactory.h * * Created on: 2014-7-19 * Author: root */ #ifndef SOCKETFACTORY_H_ #define SO ...
- HTML5-svg圆形饼状图进度条实现原理
<svg width="440" height="440" viewbox="0 0 440 440"> <circle ...
- idea 打开自动编译以及查看Problem窗口
1.打开perference 2.选择Build-Compile-Make Project Automatically自动构建项目
- 高可用之KeepAlived(2):keepalived+lvs
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- 高并发WEB网站优化方案
一.什么是高并发在互联网时代,所讲的并发.高并发,通常是指并发访问,也就是在某个时间点,有多少个访问同时到来.比如,百度首页同时有1000个人访问,那么也就是并发为1000.通常一个系统的日PV在千万 ...
- cmd命令报4048错误
解决方法: win10系统:快捷键win+x,找到命令提示符(管理员),打开再下载相应的依赖包. win7/8:打开开始,输入命令提示符,找到管理员权限的命令提示符,打开再下载相应的依赖包. 提示:如 ...
- 10分钟入门spark
Spark是硅谷各大公司都在使用的当红炸子鸡,而且有愈来愈热的趋势,所以大家很有必要了解学习这门技术.本文其实是笔者深入浅出hadoop系列的第三篇,标题里把hadoop去掉了因为spark可以不依赖 ...
- HashPayloadPcapReader
package net.ripe.hadoop.pcap; import java.io.DataInputStream; import java.io.IOException; import com ...
- shell脚本基础1 概述及变量
shell概述:在linux内核与用户之间的解释器程序通常指/bin/bash负责指向内核翻译及传达用户/程序指令相当于操作系统的"外壳" shell的使用方式:交互式--命令行: ...