资讯专栏INFORMATION COLUMN

Scrapy:python3下的第一次运行测试

dack / 2744人阅读

摘要:,引言的架构初探一文讲解了的架构,本文就实际来安装运行一下爬虫。第一次运行的测试成功,接下来的工作接下来,我们将使用来实现网络爬虫,省掉对每个人工去生成和测试的工作量。,文档修改历史,首次发布

1,引言

《Scrapy的架构初探》一文讲解了Scrapy的架构,本文就实际来安装运行一下Scrapy爬虫。本文以官网的tutorial作为例子,完整的代码可以在github上下载。

2,运行环境配置

本次测试的环境是:Windows10, Python3.4.3 32bit

安装Scrapy : $ pip install Scrapy #实际安装时,由于服务器状态的不稳定,出现好几次中途退出的情况

3,编写运行第一个Scrapy爬虫

3.1. 生成一个新项目:tutorial

$ scrapy startproject tutorial

项目目录结构如下:

3.2. 定义要抓取的item

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

3.3. 定义Spider

import scrapy
from tutorial.items import DmozItem

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        for sel in response.xpath("//ul/li"):
            item = DmozItem()
            item["title"] = sel.xpath("a/text()").extract()
            item["link"] = sel.xpath("a/@href").extract()
            item["desc"] = sel.xpath("text()").extract()
            yield item

3.4. 运行

$ scrapy crawl dmoz -o item.json

1) 结果报错:
A) ImportError: cannot import name "_win32stdio"
B) ImportError: No module named "win32api"

2) 查错过程:查看官方的FAQ和stackoverflow上的信息,原来是scrapy在python3上测试还不充分,还有小问题。

3) 解决过程:
A) 需要手工去下载twisted/internet下的 _win32stdio 和 _pollingfile,存放到python目录的libsitepackagestwistedinternet下
B) 下载并安装pywin32

再次运行,成功!在控制台上可以看到scrapy的输出信息,待运行完成退出后,到项目目录打开结果文件items.json, 可以看到里面以json格式存储的爬取结果。

[
{"title": ["        About       "], "desc": [" ", " "], "link": ["/docs/en/about.html"]},
{"title": ["   Become an Editor "], "desc": [" ", " "], "link": ["/docs/en/help/become.html"]},
{"title": ["            Suggest a Site          "], "desc": [" ", " "], "link": ["/docs/en/add.html"]},
{"title": [" Help             "], "desc": [" ", " "], "link": ["/docs/en/help/helpmain.html"]},
{"title": [" Login                       "], "desc": [" ", " "], "link": ["/editors/"]},
{"title": [], "desc": [" ", " Share via Facebook "], "link": []},
{"title": [], "desc": [" ", "  Share via Twitter  "], "link": []},
{"title": [], "desc": [" ", " Share via LinkedIn "], "link": []},
{"title": [], "desc": [" ", " Share via e-Mail   "], "link": []},
{"title": [], "desc": [" ", " "], "link": []},
{"title": [], "desc": [" ", "  "], "link": []},
{"title": ["        About       "], "desc": [" ", " "], "link": ["/docs/en/about.html"]},
{"title": ["   Become an Editor "], "desc": [" ", " "], "link": ["/docs/en/help/become.html"]},
{"title": ["            Suggest a Site          "], "desc": [" ", " "], "link": ["/docs/en/add.html"]},
{"title": [" Help             "], "desc": [" ", " "], "link": ["/docs/en/help/helpmain.html"]},
{"title": [" Login                       "], "desc": [" ", " "], "link": ["/editors/"]},
{"title": [], "desc": [" ", " Share via Facebook "], "link": []},
{"title": [], "desc": [" ", "  Share via Twitter  "], "link": []},
{"title": [], "desc": [" ", " Share via LinkedIn "], "link": []},
{"title": [], "desc": [" ", " Share via e-Mail   "], "link": []},
{"title": [], "desc": [" ", " "], "link": []},
{"title": [], "desc": [" ", "  "], "link": []}
]

第一次运行scrapy的测试成功

4,接下来的工作

接下来,我们将使用GooSeeker API来实现网络爬虫,省掉对每个item人工去生成和测试xpath的工作量。目前有2个计划:

在gsExtractor中封装一个方法:从xslt内容中自动提取每个item的xpath

从gsExtractor的提取结果中自动提取每个item的结果

具体选择哪个方案,将在接下来的实验中确定,并发布到gsExtractor新版本中。

5,文档修改历史

2016-06-15:V1.0,首次发布

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37998.html

相关文章

  • scrapy入门

    摘要:快速入门首先,初步要做的就是快速构建一个爬虫。然后把结果加入到一个队列中。既然是入门,我们肯定是先关心我们需要的。 因为公司项目需求,需要做一个爬虫。所以我一个python小白就被拉去做了爬虫。花了两周时间,拼拼凑凑总算赶出来了。所以写个blog做个记录。 快速入门 首先,初步要做的就是快速构建一个爬虫。 配置环境 Mac下安装 1) 直接从官网下载 python下载官网 2) 是通过...

    CrazyCodes 评论0 收藏0
  • Python3网络爬虫实战---12、部署相关库的安装:Docker、Scrapyd

    摘要:阿里云安装脚本安装脚本两个脚本可以任选其一,速度都非常不错。推荐的加速器有和阿里云。阿里云不同平台的镜像加速方法配置可以参考的官方文档。以上便是的安装方式说明。上一篇文章网络爬虫实战爬虫框架的安装下一篇文章网络爬虫实战部署相关库 上一篇文章:Python3网络爬虫实战---11、爬虫框架的安装:ScrapySplash、ScrapyRedis下一篇文章:Python3网络爬虫实战---...

    ityouknow 评论0 收藏0
  • Python3网络爬虫实战---10、爬虫框架的安装:PySpider、Scrapy

    摘要:所以如果对爬虫有一定基础,上手框架是一种好的选择。缺少包,使用安装即可缺少包,使用安装即可上一篇文章网络爬虫实战爬取相关库的安装的安装下一篇文章网络爬虫实战爬虫框架的安装 上一篇文章:Python3网络爬虫实战---9、APP爬取相关库的安装:Appium的安装下一篇文章:Python3网络爬虫实战---11、爬虫框架的安装:ScrapySplash、ScrapyRedis 我们直接...

    张宪坤 评论0 收藏0
  • scrapy入门教程——爬取豆瓣电影Top250!

    摘要:注意爬豆爬一定要加入选项,因为只要解析到网站的有,就会自动进行过滤处理,把处理结果分配到相应的类别,但偏偏豆瓣里面的为空不需要分配,所以一定要关掉这个选项。 本课只针对python3环境下的Scrapy版本(即scrapy1.3+) 选取什么网站来爬取呢? 对于歪果人,上手练scrapy爬虫的网站一般是官方练手网站 http://quotes.toscrape.com 我们中国人,当然...

    senntyou 评论0 收藏0
  • Python3网络爬虫实战---13、部署相关库ScrapydClient、ScrapydAPI

    摘要:相关链接使用说明安装推荐使用安装,命令如下验证安装安装成功后会有一个可用命令,叫做,即部署命令。我们可以输入如下测试命令测试是否安装成功如果出现如图类似输出则证明已经成功安装图运行结果在后文我们会详细了解它的用法。 上一篇文章:Python3网络爬虫实战---12、部署相关库的安装:Docker、Scrapyd下一篇文章:Python3网络爬虫实战---14、部署相关库的安装:Scra...

    lolomaco 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<