基于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小程序分享
Dec 05 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
python2.7安装图文教程
Mar 13 Python
Python基础教程之异常详解
Jan 10 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
java中的控制结构(if,循环)详解
Jun 26 Python
Python模块汇总(常用第三方库)
Oct 07 Python
python识别验证码图片实例详解
Feb 17 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
yii中widget的用法
2014/12/03 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
php框架知识点的整理和补充
2021/03/01 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
python的else子句使用指南
2016/02/27 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python 多核并行计算的示例代码
2017/11/07 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
车间工艺员岗位职责
2013/12/09 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
七年级语文教学反思
2016/03/03 职场文书