2014-06-07 2 views
1

Я написал класс для Scrapy для того, чтобы получить часть содержимого страницы, как так:Как извлечь точные метки в Scrapy

#!/usr/bin/python 
import html2text 
from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 


class StockSpider(BaseSpider): 
    name = "stock_spider" 
    allowed_domains = ["www.hamshahrionline.ir"] 
    start_urls = ["http://www.hamshahrionline.ir/details/261730/Health/publichealth"] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
#  sample = hxs.select("WhatShouldIputHere").extract()[AndHere] 
     converter = html2text.HTML2Text() 
     converter.ignore_links = True 
     print converter.handle(sample) 

Моей главной проблемой является государством, что я заметил это.

Как я могу задать для этого путь пути и извлечения?

Можете ли вы направить меня на это и дать мне несколько примеров?

Спасибо

+1

'HtmlXPathSelector' устарел. Используйте «Селектор». См. Это руководство для нескольких примеров: http://doc.scrapy.org/en/latest/topics/selectors.html – helderdarocha

ответ

2

Сначала вам нужно решить, что делать данные, которые вы хотите, чтобы выйти из страницы, определить Item класс и набор Field с. Затем, чтобы заполнить поля полей данными, вам нужно использовать выражения xpath в методе parse() вашего паука.

Вот пример, который извлекает все пункты из тела (все новости, я полагаю):

from scrapy.item import Item, Field 
from scrapy.spider import Spider 
from scrapy.selector import Selector 


class MyItem(Item): 
    content = Field() 


class StockSpider(Spider): 
    name = "stock_spider" 
    allowed_domains = ["www.hamshahrionline.ir"] 
    start_urls = ["http://www.hamshahrionline.ir/details/261730/Health/publichealth"] 

    def parse(self, response): 
     sel = Selector(response) 
     paragraphs = sel.xpath("//div[@class='newsBodyCont']/p/text()").extract() 
     for p in paragraphs: 
      item = MyItem() 
      item['content'] = p 
      yield item 

Обратите внимание, что я использую Selector класс, так как HtmlXPathSelector осуждается. Кроме того, я использую метод xpath() вместо select() по той же причине.

Кроме того, обратите внимание, что вам лучше извлечь ваше определение Item в отдельный скрипт python, чтобы следовать за Scrapy project structure.

Надеюсь, что это поможет.

+0

Очень хорошо ... спасибо – MLSC

Смежные вопросы