原文:https://blog.csdn.net/ssw_1990/article/details/51254227

提到Python与网络爬虫,可能会想到urllib,urllib2,BeautifulSoup,Scrapy等类库,本文主要总结Scrapy与网络爬虫。Scrapy是一个功能强大的网络爬虫类库,通过命令pip install scrapy进行安装,爬取的海量数据可以通过MongoDB进行存储,有了想要的数据集后就可以对其进行分析挖掘。

1. 实现一个简单的Scrapy网络爬虫

先用Scrapy实现一个采集网页的title字段,以对Scrapy有个直观的印象。

(1)新建wikiSpider项目

scrapy startproject wikiSpider

生成的项目结构,如下所示:

─Scrapy

└─wikiSpider

│ scrapy.cfg

└─wikiSpider

│ items.py

│ pipelines.py

│ settings.py

│ __init__.py

└─spiders

__init__.py

说明:scrapy.cfg:项目配置文件;wikiSpider/items.py:项目items文件;wikiSpider/pipelines.py:项目管道文件;wikiSpider/settings.py:项目配置文件;wikiSpider/spiders:放置spider的目录。

(2)创建Article类

在items.py文件中,定义Article类,如下所示:

from scrapy import Item, Field

class Article(Item):

title = Field()

(3)创建articleSpider.py文件

在wikiSpider/wikiSpider/spiders/文件夹中创建一个articleSpider.py文件,如下所示:

from scrapy.selector import Selector

from scrapy import Spider

from wikiSpider.items import Article

class ArticleSpider(Spider):

name = "article"

allowed_domains = ["en.wikipedia.org"]

start_urls = ["http://en.wikipedia.org/wiki/Main_Page",

"http://en.wikipedia.org/wiki/Python_%28programming_language%29"]

def parse(self,response):

item = Article()

title = response.xpath('//h1/text()')[0].extract()

print("Title is: "+title)

item['title'] = title

return item

(4)运行Scrapy网络爬虫

在wikiSpider主目录中运行ArticleSpider,如下所示:

scrapy crawl article

这个爬虫首先进入start_urls中的两个页面,然后收集信息,最后停止运行。Scrapy为爬虫的start_urls属性中的每个URL创建了一个scrapy.http.Request对象,并将爬虫的parse方法指定为回调函数。scrapy.http.Response对象被返回,结果也被反回给爬虫。

如果遇到错误[scrapy] ERROR: Error downloading : u'\xd8',需要设置settings.py文件中的ROBOTSTXT_OBEY = False即可。

2. Scrapy基础知识

Scrapy使用基于XPath和CSS表达式机制从网页中提取数据。Selector有4个基本的方法,分别是xpath(),css(),extract(),re()。

(1)xpath

xpath是Scrapy下快速提取特定信息(比如title,head,href等)的一个接口。常用的表达式和描述,如下所示:

nodename:选取此节点的所有子节点。

/:从根节点选取。

//:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

.:选取当前节点。

..:选取当前节点的父节点。

@:选取属性。

(2)Scrapy shell

Scrapy终端是一个交互终端,供你在未启动spider的情况下尝试及调试你的爬取代码,可以用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。启动终端的命令为scrapy shell 。Scrapy终端根据下载的页面会自动创建一些方便使用的对象,如下所示:

crawler:当前Crawler对象。

spider:处理URL的spider。

request:最近获取到的页面的Request对象。

response:包含最近获取到的页面的Response对象。

sel:根据最近获取到的response构建的Selector对象。

settings:当前的Scrapy settings。

3. Scrapy工作原理

Scrapy使用Twisted异步网络库来处理网络通讯。整体架构如下所示:

引擎(Scrapy Engine):用来处理整个系统的数据流处理,触发事务。

调度器(Scheduler):用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。

下载器(Downloader):用于下载网页内容,并将网页内容返回给蜘蛛。

蜘蛛(Spiders):蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。

项目管道(Item Pipeline):负责处理有蜘蛛从网页中抽取的项目,主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

下载器中间件(Downloader Middlewares):位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

蜘蛛中间件(Spider Middlewares):介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。

调度中间件(Scheduler Middlewares):介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

4. BeautifulSoup基础知识

参考文献:

[1] 《Python网络数据采集》

[2] Scrapy:http://scrapy.org/

[3] Beautiful Soup:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

---------------------

作者:1000sprites

来源:CSDN

原文:https://blog.csdn.net/ssw_1990/article/details/51254227

版权声明:本文为博主原创文章,转载请附上博文链接!

python scrap_Scrap简介相关推荐

  1. 《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1. ...

  2. Python列表简介

    Python列表简介 什么是列表 #普通的变量定义形式 tom ='Tom' jack ='Jack' john ='John'pet1 ='cat' pet2 ='dog' pet3 ='bird' ...

  3. Python编程简介

    Python编程简介 2011年06月23日 NOTE: The following is a short tutorial about python program, for Chinese rea ...

  4. 大数据教程【05.01】--Python 数据分析简介

    更多信息请关注WX搜索GZH:XiaoBaiGPT Python数据分析简介 本教程将介绍如何使用Python进行大数据分析.Python是一种功能强大且易于使用的编程语言,具备丰富的数据分析库和工具 ...

  5. Python基础知识(Python的简介、Python环境的安装、集成开发环境Pycharm的安装)

    1.Python的简介 python是跨平台的计算机语言.解释型语言.交互式语言.面向对象语言.初学者最好学的语言 什么是跨平台:意思就是说可以在很多操作系统中执行.比如:可以在windows操作系统 ...

  6. Python Notebook简介

    windows下面安装和使用Python, IPython NoteBook (详细步骤) Python Notebook简介1 IPython notebook目前已经成为用Python做教学.计算 ...

  7. python画图简介

    python画图简介 1.seaborn学习资料 2.matplotlib学习资料 3.扩展学习资料 4.实际练习 5.常用命令(待补充) 6.常用知识点备查 6.1 plt的默认属性rc参数 6.2 ...

  8. Python库简介之pylab

    Python库简介之pylab 转载于 链接: https://blog.csdn.net/qq_34519492/article/details/96437901 https://blog.csdn ...

  9. python笔记-简介

    一Python的简介 一历史简介 Python诞生于1991年,目前有27年了,比1995年的JAVA语言都早了4年,为何大器晚成? 其一,在1990那个年代,计算机性能相比现在差很多,程序执行速度和 ...

最新文章

  1. 深度学习项目代码阅读建议
  2. Nginx服务器不支持PATH_INFO的问题及解决办法
  3. python必背内容-【经验分享】学Python必背的初级单词
  4. Gitlab 安装 使用
  5. 小程序 数据缓存
  6. Memcached Client 使用手册
  7. zookeeper工作原理、安装配置、工具命令简介
  8. 今生一定娶美女 不遇美女终生不娶
  9. 一个AI玩57个游戏,DeepMind离真正「万能」的AGI不远了!
  10. 面试 AI 算法岗,你被要求复现顶会了嘛?
  11. hexo 环境变量_优雅的博客框架,快速、简洁、高效且主题丰富——Hexo
  12. luarocks argparse
  13. 大二 数据结构 期末复习题(仅供参考)
  14. unity材质丢失素材变成粉红色的解决方法
  15. 车联网技术与产业发展趋势 学习记录
  16. 手机酒店预订的革命之作——全新艺龙无线手机客户端测评
  17. 既是消费者也是管理者:纽约州分布式能源改革
  18. 20 个 Laravel Eloquent 必备的实用技巧 1
  19. 深度学习---人脸检测(勿喷)
  20. 伦敦银现的交易时间特点

热门文章

  1. 007-2虚拟地址空间布局
  2. 基于springboot实现人事管理系统演示【附项目源码】
  3. 基于微信小程序“老子过软考”APP
  4. extjs中bind_Extjs中双向数据绑定的一个用法
  5. vscode无法运行和调试使用了部分stl库的程序
  6. 特斯拉是l3还是l2_自动驾驶L2、L3级,到底是什么?竟引得BBA联手开发
  7. 轮胎界内的“三维全能战士”,2022年如何乘胜追击?
  8. 一级b类计算机知识点,计算机等级考试(一级B)考试知识点
  9. 2021年危险化学品生产单位安全生产管理人员复审模拟考试及危险化学品生产单位安全生产管理人员作业考试题库
  10. 并联串联混合的电压和电流_电流互感器知识:铭牌、接线图、重点问题详解