我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Scrapy:python3下的第一次运

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Scrapy:python3下的第一次运

1,引言

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

2,运行环境配置

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

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


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

3.1. 生成一个新项目:tutorial

$ scrapy startproject tutorial

项目目录结构如下:

162149wj2j1c852tls1t01.png 
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目录的lib\sitepackages\twisted\internet下
   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,首次发布


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Scrapy:python3下的第一次运

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Scrapy:python3下的第一次运

1,引言《Scrapy的架构初探》一文讲解了Scrapy的架构,本文就实际来安装运行一下Scrapy爬虫。本文以官网的tutorial作为例子,完整的代码可以在github上下载。2,运行环境配置本次测试的环境是:Windows10, Py
2023-01-31

android判断软件是否第一次运行的方法

本文实例讲述了android判断软件是否第一次运行的方法。分享给大家供大家参考。具体如下:SharedPreferences sharedPreferences = this.getSharedPreferences("share", MO
2022-06-06

七年级下册数学第一次月考试卷

一丶选择题(36分) 1、已知方程3x+a=2的解是5,则a的值是(  ) A、—13   B、—17      C、13    D、17 2、若是一元一次方程,则m的值是(  ) A.4或2      B.2         C.4       D.-4 3
2017-05-29

Win8.1下在第一次拨号651错误再次拨号成功的解决方法

相信不少Windows8.1用户使用本地宽带连接时,都会在第一次拨号提示651错误,然后再次拨号成功,这个系统bug终于得到微软的回应,近期将通过Windows Update推送更新解决该问题,那修复前,普通用户该如何解决出现该问题有可能是
2023-06-03

如何确定 PHP foreach 循环中的第一次和最后一次迭代

PHP foreach() 循环用于遍历数组中的每个元素。在本文中,我们将来学习如何使用 foreach() 循环以及如何获取数组的第一项和最后一项元素。PHP foreach() 语法foreach() 循环主要用于遍历数组的每个值。fo
如何确定 PHP foreach 循环中的第一次和最后一次迭代
2024-02-27

装Win8双系统后第一次开机运行Win8时会出现黑屏

据一些用户用户反映,装Win8双系统会出现这样一个问题:在装完后第一次开机运行Win8系统时会出现黑屏的现象。其实这个问题也不难对付,我们来看看解决它的方法。软件名称:TuneUp Utilities 2014 V14.0.1001 多国语
2022-06-04

java实现查找第一个只出现一次的字符

问题:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)相关视频教程推荐:java在线教程解决思路:题目要求很明确,就是遍历字符串,并且给字符计数,计数之后,找到
java实现查找第一个只出现一次的字符
2016-06-10

Android中设置只有程序第一次运行才显示的界面实现思路

程序安装后第一次启动: 启动页-->功能介绍页-->系统主页 以后启动: 启动页-->系统主页 所以在启动页中判断一下就可以了 可以弄一个文件保存一个状态,推荐用SharedPreferences。 1.可以定义一个变量来判断程序是第几次运
2022-06-06

springbootthemaleaf第一次进页面不加载css的问题

这篇文章主要介绍了springbootthemaleaf第一次进页面不加载css的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

python怎么查找字符第一次出现的位置

你可以使用字符串的`find()`方法来查找字符第一次出现的位置。`find()`方法返回字符在字符串中的索引,如果字符不存在,则返回-1。以下是一个例子:text = "Hello, world!"# 查找字符'o'第一次出现的位置
2023-10-27

dede中第一次登陆密码错误的解决方法

你要查一编程客栈下是否有 dedwww.cppcns.come_admin 这个表,假如有,看看有没www.cppcns.com有数据, 假如用户名和密码没有不答应的符号的话, 一般是服务器可能能无法完成安装的SQL导入才可能会提示用户ht
2022-06-12

第一次使用Android Studio时你应该知道的一切配置(推荐)

【开发环境】物理机版本:Win7旗舰版(64位)Android Studio版本:2.1正式版【Android Studio的优势】基于Gradle的构建支持Android特定重构和快速修复更加丰富的模板代码,让创建程序更简单提示工具更好地
2023-05-31

阿里云第一次建数据库的详细操作步骤

本文主要介绍了如何在阿里云上第一次建立数据库,包括如何创建数据库实例、选择数据库类型、设置数据库参数、配置数据库安全等步骤。适合初学者参考。正文:阿里云是中国最大的云计算服务提供商之一,提供了丰富的云服务,包括数据库服务。如果你想在阿里云上第一次建立数据库,你需要按照以下步骤操作。首先,你需要登录到阿里云控制台。
阿里云第一次建数据库的详细操作步骤
2023-11-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录