基于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系列之从文件读取和保存数据
May 23 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
python生成验证码图片代码分享
Jan 28 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
python利用微信公众号实现报警功能
Jun 10 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
python将图片转为矢量图的方法步骤
Mar 30 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
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
酒店行政人事部经理职务说明书
2014/02/26 职场文书
商业项目策划方案
2014/06/05 职场文书
2015年助残日活动总结
2015/03/27 职场文书
材料员岗位职责范本
2015/04/11 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python