基于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在指定目录下查找gif文件的方法
May 04 Python
Python出现segfault错误解决方法
Apr 16 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
Python实现程序判断季节的代码示例
Jan 28 Python
Python使用while循环花式打印乘法表
Jan 28 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
python numpy存取文件的方式
Apr 01 Python
tensorflow使用指定gpu的方法
Feb 04 Python
pycharm无法导入本地模块的解决方式
Feb 12 Python
python中如何设置代码自动提示
Jul 15 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中大括号作用介绍
2012/03/22 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python线程指南详细介绍
2017/01/05 Python
python妙用之编码的转换详解
2017/04/21 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
如何通过命令行进入python
2020/07/06 Python
python实现视频压缩功能
2020/12/18 Python
python音频处理的示例详解
2020/12/23 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
中专毕业生自荐信范文
2013/11/28 职场文书
保安自我鉴定范文
2013/12/08 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS