基于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 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
跟老齐学Python之折腾一下目录
Oct 24 Python
Python中for循环控制语句用法实例
Jun 02 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
Django 内置权限扩展案例详解
Mar 04 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
python flask中动态URL规则详解
Nov 22 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Python项目跨域问题解决方案
Jun 22 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
python 实现图片特效处理
Apr 03 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
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
JS如何生成动态列表
2020/09/22 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
境外导游求职信
2014/02/27 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
小学社会实践活动总结
2014/07/03 职场文书
学习考察心得体会
2014/09/04 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
财务整改报告范文
2014/11/05 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
Python中异常处理用法
2021/11/27 Python
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python