失败的蜘蛛的碎片状态页面

时间:2014-06-26 08:11:18

标签: django web-scraping

我已经制作了一个蜘蛛来抓取新闻,这是

的代码
class AbcSpider(XMLFeedSpider):
handle_httpstatus_list = [404, 500]
name = 'abctv'
allowed_domains = ['abctvnepal.com.np']
start_urls = [
    'http://www.abctvnepal.com.np',
]

def parse(self, response):

    if response.status in self.handle_httpstatus_list:
        return Request(url="http://google.com", callback=self.after_404)

    hxs = HtmlXPathSelector(response) # The XPath selector
    sites = hxs.select('//div[@class="marlr respo-left"]/div/div/h3')
    items = []
    for site in sites:
        item = NewsItem()
        item['title'] = escape(''.join(site.select('a/text()').extract())).strip()
        item['link'] = escape(''.join(site.select('a/@href').extract())).strip()
        item['description'] = escape(''.join(site.select('p/text()').extract()))
        item = Request(item['link'],meta={'item': item},callback=self.parse_detail)
        items.append(item)
    return items

def parse_detail(self, response):
    item = response.meta['item']
    sel = HtmlXPathSelector(response)
    details = sel.select('//div[@class="entry"]/p/text()').extract()
    detail = ''
    for piece in details:
        detail = detail + piece
    item['details'] = detail
    item['location'] = detail.split(",",1)[0]
    item['published_date'] = (detail.split(" ",1)[1]).split(" ",1)[0]+' '+((detail.split(" ",1)[1]).split(" ",1)[1]).split(" ",1)[0]     
    return item

def after_404(self, response):
    print response.url

我想要的是如果蜘蛛不工作或不爬行然后我想显示一个状态页面说蜘蛛不工作。我怎样才能做到这一点??我怎样才能建立状态页面?任何帮助?

我已将此与django集成。我可以在django中创建状态然后显示。如果是,那么

1 个答案:

答案 0 :(得分:0)

我只能采取措施而不提供任何明确的例子(无论如何更好的感谢链接)

  1. 创建django项目
  2. 在项目中创建单个视图
  3. 此单一视图必须能够以某种方式连接到您的webcrawler:P。有几种方法可以做到:
  4. 将一些状态更新写入数据库(您可以将django项目包含到python路径中,并获取对爬虫中django orm的访问权限)。您必须创建模型来保存数据,但这并不是很难。
  5. 您可以使用某种消息队列(可能想要查看http://www.celeryproject.org/)。这可能是最复杂的选项,因为它需要设置和配置不同的软件。
  6. 或者您可以通过在视图中执行shell命令并确认是否存在正确的pid进程来检查您的进程是否正在运行。
  7. 根据方法4. 5.或6从视图返回数据。