基于scrapy实现的简单蜘蛛采集程序


Posted in Python onApril 17, 2015

本文实例讲述了基于scrapy实现的简单蜘蛛采集程序。分享给大家供大家参考。具体如下:

# Standard Python library imports
# 3rd party imports
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
# My imports
from poetry_analysis.items import PoetryAnalysisItem
HTML_FILE_NAME = r'.+\.html'
class PoetryParser(object):
  """
  Provides common parsing method for poems formatted this one specific way.
  """
  date_pattern = r'(\d{2} \w{3,9} \d{4})'
 
  def parse_poem(self, response):
    hxs = HtmlXPathSelector(response)
    item = PoetryAnalysisItem()
    # All poetry text is in pre tags
    text = hxs.select('//pre/text()').extract()
    item['text'] = ''.join(text)
    item['url'] = response.url
    # head/title contains title - a poem by author
    title_text = hxs.select('//head/title/text()').extract()[0]
    item['title'], item['author'] = title_text.split(' - ')
    item['author'] = item['author'].replace('a poem by', '')
    for key in ['title', 'author']:
      item[key] = item[key].strip()
    item['date'] = hxs.select("//p[@class='small']/text()").re(date_pattern)
    return item
class PoetrySpider(CrawlSpider, PoetryParser):
  name = 'example.com_poetry'
  allowed_domains = ['www.example.com']
  root_path = 'someuser/poetry/'
  start_urls = ['http://www.example.com/someuser/poetry/recent/',
         'http://www.example.com/someuser/poetry/less_recent/']
  rules = [Rule(SgmlLinkExtractor(allow=[start_urls[0] + HTML_FILE_NAME]),
                  callback='parse_poem'),
       Rule(SgmlLinkExtractor(allow=[start_urls[1] + HTML_FILE_NAME]),
                  callback='parse_poem')]

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
使用Python获取Linux系统的各种信息
Jul 10 Python
Python的多态性实例分析
Jul 07 Python
Python基于checksum计算文件是否相同的方法
Jul 09 Python
python实现Floyd算法
Jan 03 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
pandas 选择某几列的方法
Jul 03 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
Python post请求实现代码实例
Feb 28 Python
keras 多任务多loss实例
Jun 22 Python
Python logging日志库空间不足问题解决
Sep 14 Python
python搜索算法原理及实例讲解
Nov 18 Python
python爬取某网站原图作为壁纸
Jun 02 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 #Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 #Python
在Python中实现贪婪排名算法的教程
Apr 17 #Python
在Linux下调试Python代码的各种方法
Apr 17 #Python
Python脚本在Appium库上对移动应用实现自动化测试
Apr 17 #Python
Python中生成器和yield语句的用法详解
Apr 17 #Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 #Python
You might like
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
python logging模块的使用总结
2019/07/09 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
《狼》教学反思
2014/03/02 职场文书
购房委托书
2014/10/15 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书