基于scrapy实现的简单蜘蛛采集程序

 更新时间:2015年04月17日 12:22:19   作者:pythoner  
这篇文章主要介绍了基于scrapy实现的简单蜘蛛采集程序,实例分析了scrapy实现采集程序的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了基于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批量下载网站马拉松照片的完整步骤

    这篇文章主要给大家介绍了关于利用python批量下载网站马拉松照片的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Python爬虫自动化爬取b站实时弹幕实例方法

    Python爬虫自动化爬取b站实时弹幕实例方法

    在本篇文章里小编给大家整理的是一篇关于Python爬虫自动化爬取b站实时弹幕实例方法,有兴趣的朋友们可以学习下。
    2021-01-01
  • 解决python中文乱码问题方法总结

    解决python中文乱码问题方法总结

    这篇文章主要介绍了解决python中文乱码问题方法总结,需要的朋友可以参考下
    2021-05-05
  • pycharm使用matplotlib画图问题解决方法

    pycharm使用matplotlib画图问题解决方法

    Pycharm是一款功能强大的Python集成开发环境(IDE),它提供了许多有用的工具和功能,可以帮助开发人员更轻松地编写和调试Python代码,其中一个有用的工具是Pycharm如何画图,本文给大家介绍在pycharm中使用matplotlib画图问题,感兴趣的朋友一起看看吧
    2023-11-11
  • 详解Python实现字典合并的四种方法

    详解Python实现字典合并的四种方法

    这篇文章主要为大家详细介绍了Python的合并字典的四种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 以SortedList为例详解Python的defaultdict对象使用自定义类型的方法

    以SortedList为例详解Python的defaultdict对象使用自定义类型的方法

    这篇文章主要介绍了以SortedList为例详解Python的defaultdict对象使用自定义类型的方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 讯飞webapi语音识别接口调用示例代码(python)

    讯飞webapi语音识别接口调用示例代码(python)

    这篇文章主要介绍了如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代码并总结经验,解决了常见的模块和属性错误,需要的朋友可以参考下
    2025-03-03
  • python自动化运维之Telnetlib的具体使用

    python自动化运维之Telnetlib的具体使用

    本文将结合实例代码,介绍python自动化运维之Telnetlib的具体使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 深入浅析Python 中的sklearn模型选择

    深入浅析Python 中的sklearn模型选择

    这篇文章主要介绍了Python sklearn模型选择的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • pandas读取文件夹下所有excel文件的实现

    pandas读取文件夹下所有excel文件的实现

    最近需要做一个需求,要求汇总一个文件夹所有的excel文件,所以本文就来介绍一下pandas读取文件夹下所有excel文件的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论