当前位置: 首页 > news >正文

Scrapy 入门:Hello Scrapy

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

scrapy install

  • 官方文档方式 
    其实现在scrapy 的文档做的挺好, 安装文档在首页就有 点我点我。 
    下面说说我的另类安装方法,我说这个方法,在某些方面有优势,但不是绝对优势,利弊自己取舍。

  • Windows 自定义安装 

  1. 打开 https://pypi.python.org 。

  2. 在页面的搜索框中输入 scrapy, 开始搜索,找到最新的版本,我这个时候是https://pypi.python.org/pypi/Scrapy/1.0.3。

  3. 翻页到页面的最底部,找到 Requires Distributions 部分,看看都有啥,我这里的是:Twisted(>=10.0.0),w3lib (>=1.8.0), queuelib, lxml, pyOpenSSL, cssselect (>=0.9), six (>=1.5.2), service-identity。

  4. 对于上面的依赖,依次尝试 5,6步。

  5. 在 cmd 下面执行命令 pip install xxxx, 如果提示安装成功, 跳过第6步,接着安装下一个。

  6. 去 Google 搜索 xxxx msi {version} 这里的version请填写满足依赖条件的版本号, 认准了 pypi.python.org 的域名,点进去,找到msi的下载包,下载下来进行安装。

  7. 到这里,依赖已经安装完毕,执行 pip install scrapy。如果最后提示成功,说明你的安装成功了。

Ubuntu 自定义安装 

  1. Ubuntu 安装最简单的方式当然是官方的 ppa 安装了啊。

  2. Ubuntu 通过pip 安装 最重要的是 pip 需要的各种库:

apt-get install -y python-dev gcc  libxml2-dev libxslt1-dev libffi-dev python-pip 
pip install -U pip
pip install lxml twisted cryptography
pip install scrapy

  • Mac 自定义安装

pip install scrapy

scrapy bootstrap

装好之后,当然就是 hello-scrapy 的时间了。 
使用下列命令新建一个工程:

scrapy startproject Demo

使用下列命令进入目录,然后新建一个 Spider 来工作,这里是使用的名称为 MeiSpider, 抓取 bj.meituan.com 的数据。

cd Demo
scrapy genspider MeiSpider bj.meituan.com

执行之后的目录结构如下:

.
├── Demo
│   ├── __init__.py
│   ├── items.py            # item
│   ├── pipelines.py        # pipeline
│   ├── settings.py         # project setting file
│   └── spiders
│       ├── __init__.py    
│       └── MeiSpider.py    # genspider generatored spider file
└── scrapy.cfg              # configuration file

2 directories, 10 files

查询下现在的 spiders,

$ scrapy list
MeiSpider # 刚刚新建的 MeiSpider

在项目 Demo 下面的 spiders 目录中就有了我们刚生成的 MeiSpider.py 文件,打开这个文件,看看内容:

# -*- coding: utf-8 -*-
import scrapy


class MeispiderSpider(scrapy.Spider):
   name = "MeiSpider"
   allowed_domains = ["bj.meituan.com"]
   start_urls = (
       'http://www.bj.meituan.com/',
   )

   def parse(self, response):
       pass

注意一下, 生成的代码里面的 start_urls 中的 url 有错误,我们手动改成 bj.meituan.com 。 
如果你迫不及待的想尝试下效果,可以试试这个:

scrapy crawl MeiSpider --nolog

哈哈,是不是什么结果也没有! 对啊, 因为我们还没告诉 Spider 该怎么工作。这个就是 Spider 中 parse 方法的作用了, 我们尝试把 parse 改成这样

def parse(self, response):
   return {'desc', 'hello scrapy'"url": response.url}

接着运行 scrapy crawl MeiSpider -t jsonlines --nolog -o - 是不是很有意思,出来了结果了,这样,一个简单的 Hello-Scrapy 就完成了。


转载于:https://my.oschina.net/u/590681/blog/544352

相关文章:

  • 李嘉诚储藏财富的背后隐藏着什么奥秘?
  • Bitnami Redmine 与 gerrit 整合问题解决
  • 电商项目系列文档(三):秒杀的设计
  • Gitlab数据迁移
  • js模块化开发——require.js学习总结
  • git版本控制实践纪录
  • 用javascript向一个网页连接接口发送请求,并接收该接口返回的json串
  • SpringMVC ------请求参数,请求头,cookie等注解。
  • 机器学习之四:决策树
  • [转载]SharePoint 2013 解决方案中使用JavaScript
  • leetcode第一刷_Merge Sorted Array
  • find详解
  • MyBatis Generator myeclipse 生成 mybatis
  • samba基于虚拟用户的生产环境配置
  • iOS开发中的Self-Manager 模式
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Apache的基本使用
  • codis proxy处理流程
  • Computed property XXX was assigned to but it has no setter
  • css布局,左右固定中间自适应实现
  • HashMap剖析之内部结构
  • JavaScript设计模式系列一:工厂模式
  • Java基本数据类型之Number
  • python 装饰器(一)
  • Python实现BT种子转化为磁力链接【实战】
  • React+TypeScript入门
  • Redash本地开发环境搭建
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用jQuery怎么做到前后端分离
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 正则表达式-基础知识Review
  • ​2020 年大前端技术趋势解读
  • ​Java并发新构件之Exchanger
  • ​渐进式Web应用PWA的未来
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (10)ATF MMU转换表
  • (3)选择元素——(17)练习(Exercises)
  • (42)STM32——LCD显示屏实验笔记
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET Core 成都线下面基会拉开序幕
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .netcore如何运行环境安装到Linux服务器
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • :如何用SQL脚本保存存储过程返回的结果集
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ Linux ] git工具的基本使用(仓库的构建,提交)