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实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...
随机推荐
- c中const定义的问题
/* 这题有个疑问: const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收 const double BASE2=BASE1+(BREAK2-BREAK1 ...
- Python网络编程(1)-socket
我会在近期尽快更新好之前写的博客,会添加新的知识点和注意问题,排版和内容都会较之前有很大的改观,感谢大家一直的支持! 1. 客户端/服务器架构 客户端/服务器架构也称主从式架构,简称C/S架构,它是一 ...
- IntelliJ IDEA(八) :git的使用
项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,后期如果有机会我再开篇栏目细说,而且现在市场上Git的使用率已经远 ...
- RHEL6误安装RHEL7的包导致glibc被升级后系统崩溃处理方法
RHEL6误使用了RHEL7的光盘源,安装了某个RPM包之后,导致glibc被升级,进而导致系统崩溃. [root@rhel65 ~]# yum install ftp Loaded plugin ...
- Delphi 添加外部Form单元的方法!
我用到的环境是 RAD Studio 10.2.2 有时候,需要把某个Form单元 添加到其他的工程! 此时,如果直接添加或者拖拉 .pas单元到目标工程,是无法把.pas包含的Form添加进去的 ...
- PHP 是一门弱类型语言
PHP 是一门弱类型语言 我们注意到,不必向 PHP 声明该变量的数据类型. PHP 会根据变量的值,自动把变量转换为正确的数据类型. 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类 ...
- 剑指offer第四天
25.复杂链表的复制 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的 ...
- 用线性单元(LinearUnit)实现工资预测的Python3代码
功能:通过样本进行训练,让线性单元自己找到(这就是所谓机器学习)工资计算的规律,然后用两组数据进行测试机器是否真的get到了其中的规律. 原文链接在文尾,文章中的代码为了演示起见,仅根据工作年限来预测 ...
- css动画--元素上下跳动
在H5场景动画时,常常会用到着一样一个效果,箭头持续上下跳动来引导用户上下滑动整个页面 <!DOCTYPE html > <html> <head> <met ...
- SM4密码算法(附源码)
SM4是我们自己国家的一个分组密码算法,是国家密码管理局于2012年发布的.网址戳→_→:http://www.cnnic.NET.cn/jscx/mixbz/sm4/ 具体的密码标准和算法官方有非常 ...