每天10分钟,解决一个研发问题。

如果你想了解我在做什么,请看《做一个有产品思维的研发:课程大纲》传送门:https://www.cnblogs.com/hunttown/p/10490965.html

今天我们说一下Scrapy爬虫:

Scrapy 在 Python 2.7 和 Python 3.3 或者更高版本上运行,他是用纯 Python 编写的,并且依赖于一些关键的 Python 包(其中包括):

1、lxml ,一个高效的XML和HTML解析器
2、parsel , 一个基于 lxml 的 HTML / XML 数据提取库
3、w3lib ,一个用于处理URL和网页编码的多用途助手
4、twisted, 一个异步的网络框架
5、cryptography 和 pyOpenSSL ,以处理各种网络级安全需求

Scrapy 经过测试支持的最低版本为:

a. Twisted 14.0
b. lxml 3.4
c. pyOpenSSL 0.14

一、推荐使用Linux安装,大家可以安装一个虚拟机来做

1、VMWare安装CentOS 6.5教程

二、Lniux环境安装完毕以后,还需要安装pip,这个是下面要用到的命令

2、CentOS6.5安装pip教程

三、安装依赖

[MyCentOS6 ~]$ yum install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

四、由于pyphon3在安装pip的时候安装好了,这里我们直接安装scrapy

[MyCentOs6 ~]$ pip install scrapy

五、安装完以后还需要安装一些将来要用到的软件

1、Linux安装simplejson教程

2、Linux下安装pymysql教程

3、Linux下安装jieba教程

4、Linux下安装Gensim教程

5、Linux下安装whl文件

六、创建一个爬虫项目

[MyCentOs6 ~]$ scrapy startproject tutorial

然后在 tutorial / spiders 目录下创建 quotes_spider.py 文件:

import scrapy

class QuotesSpider(scrapy.Spider):
name = "quotes" def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse) def parse(self, response):
page = response.url.split("/")[-2]
filename = 'quotes-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)

上面的 Spider 继承了 scrapy.Spider 并定义了一些属性和方法:
  a. name:标识爬虫。它在项目中必须是唯一的,也就是说,您不能为不同的 Spider 设置相同的名称。
  b. start_requests():必须返回一个可迭代的 Requests(您可以返回一个 request 列表或写一个生成器函数),Spider将开始抓取。后续请求将从这些初始请求中连续生成。
  c. parse():被调用来处理 response 的方法, response 由每个 request 下载生成。 response 参数是一个 TextResponse 的实例,它保存页面内容,并具有更多有用的方法来处理它。

运行爬虫:

[MyCentOS6 ~]$ scrapy crawl quotes

如果你想把数据存储到一个文件中:

[MySentOS6 ~]$ scrapy crawl quotes -o quotes.json

今日总结:

1. 最初的的方式是使用urllib2,读取url解析html,然后通过正则表达式匹配出想要的数据。

2. 现在的Scrapy,Python开发的一个快速、高层次的web抓取框架,用于抓取web站点并从页面中提取结构化的数据,Scrapy的用途非常广泛。

做一个有产品思维的研发:Scrapy安装的更多相关文章

  1. 做一个有产品思维的研发:部署(Tomcat配置,Nginx配置,JDK配置)

    每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...

  2. 做一个新产品需求,体验的分析文档?(例:喜马拉雅FM)

    2.1 战略层 2.11 产品定位: 一款产品覆盖面广,收听节目种类齐全,资源丰富的电台APP. 以PGC为主流,通过合作方式吸纳专业的电台人,节目人,行业名人分享内容. 融合UGC,满足人们在空闲时 ...

  3. 从零开始,做一个简单的Vuetify项目,图标安装成功

    安装Vuefity的时候,碰到一些坑,经过一番折腾,终于成功,记录正确的姿势如下: 创建一个Vue项目: vue init webpack-simple vular-admin 进入项目目录: cd ...

  4. 做IT项目管理也需要具备产品思维

    不知道大家有没有听过大胡子姜志辉老师的公开课,我自己认为讲的还是不错的. 因为本身大胡子老师就是一个IT行业的人士,自己还经历了程序员.架构师.项目经理.敏捷教练.产品经理.公司持有人等多个角色.所以 ...

  5. 做一个简单的scrapy爬虫

    前言: 做一个简单的scrapy爬虫,带大家认识一下创建scrapy的大致流程.我们就抓取扇贝上的单词书,python的高频词汇. 步骤: 一,新建一个工程scrapy_shanbay 二,在工程中中 ...

  6. 人物传记Daniel Bolsonaro:永远不要做一个思维单一的人

    从小经历了移民和不断辗转迁徙搬家的Daniel Bolsonaro(现就职于灵石团队,职位是核心技术架构师)知道,人生不可能只有一条路,也不要局限于只给自己设立一条路.既然父母能带自己离开巴西来到美国 ...

  7. 【玩转PDF】贼稳,产品要做一个三方合同签署,我方了!

    一.前言 事情是这个样子的,小农的公司,之前有个功能需要签署来进行一系列的操作,于是我们引入了一个三方平台的签署--上上签,但是有一个比较尴尬的点就是,它不支持合同在浏览器上和附件一起预览的,我们想要 ...

  8. 【转】傅盛:怎样做一个创业公司CEO?

    摘要 : 傅盛High聊会,泉灵姐姐给的命题作文.怎样做一个创业公司CEO,核心还是思维模式. 这次傅盛High聊会,泉灵姐姐给我的命题作文.创业要如何开始,本质还是思维模式.首先学会把一个开放式问题 ...

  9. 1.用互联网的产品思维打造一本app后端的书

    刚刚接触app后端,是做完adidas中国的官方商城的时候,那时不清楚app后端应该怎么架构,只能摸着石头过河,网络上只有一些零散的资料,遇到问题,只能不断地搜索,思考,务必找到解决问题的方法. 在从 ...

随机推荐

  1. android studio——替换全局的某个字符串

    android studio——替换全局的某个字符串 edit - > replace in path https://blog.csdn.net/dragon0103/article/deta ...

  2. xstream实现对象的序列化和反序列化(Java)

    概述 最新整理Java方面XML序列化和反序列化的常用工具类,找到了dom4j和xstream.dom4j相对小巧,很好的解读xml:但是对于对象的xml序列化和反序列化,我还是比较喜欢xsteam( ...

  3. python之re正则简单够用

    0. 1.参考 Python正则表达式指南 https://docs.python.org/2/library/re.html https://docs.python.org/2/howto/rege ...

  4. WEB测试重点

    1.功能测试:所实现的功能是否和需求一致:2.界面测试:界面是否美观,风格是否一致,文字内容是否正确:3.链接测试:打开链接速度是否合理:是否链接到正确的页面:是否有空白页面:4.性能测试:系统能支持 ...

  5. spring-aop 的注释用法

    一.书写增强有效代码 //切面注释@Aspectpublic class errorLogger { private static Logger logger = Logger.getLogger(e ...

  6. 网络编程-Python高级语法-深浅拷贝

    知识点:深浅拷贝,浅拷贝拷贝的是最顶层的东西,深拷贝是拷贝最深层的东西,光说可能理解不了,看下图 1.拷贝可变类型 2.拷贝不可变类型 3.拷贝元祖,元组内数据是可变类型

  7. Android Studio 常用快捷键及常用设置

    Android Studio 常用快捷键及常用设置 一.常用快捷键 快捷键 描述 Ctrl + Alt + L 格式化代码 Ctrl + ( +/- ) 展开/折叠 代码块 Ctrl + Shift ...

  8. Kali Linux NetHunter教程Kali NetHunter支持的设备和ROMs

    Kali Linux NetHunter教程Kali NetHunter支持的设备和ROMs NetHunter是一个基于Kali Linux为Nexus设备构建的Android渗透测试平台,其中包括 ...

  9. jsp填坑:找不到属性

    javax.el.PropertyNotFoundException: Property [***] not found on type 接手的项目的页面是用jsp写的,虽然再有十几天就2019年了, ...

  10. 字符串函数之Strtok()函数

    Strtok()函数详解:   该函数包含在"string.h"头文件中 函数原型: char* strtok (char* str,constchar* delimiters ) ...