基于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中的列表推导浅析
Apr 26 Python
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
使用Python的内建模块collections的教程
Apr 28 Python
python实现读取命令行参数的方法
May 22 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
使用Python实现跳帧截取视频帧
May 31 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
Python实现数字的格式化输出
Aug 01 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
PyTorch预训练Bert模型的示例
Nov 17 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
Jquery attr("checked") 返回checked或undefined 获取选中失效
2013/10/10 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
python实现web方式logview的方法
2015/08/10 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
学习型党组织建设经验材料
2014/05/26 职场文书
关于旅游的活动方案
2014/08/15 职场文书
谢师宴邀请函
2015/02/02 职场文书
网络管理员岗位职责
2015/02/12 职场文书
2015年教研组工作总结
2015/05/04 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python