2017-10-31 26 views
0

私はScrapyで新聞の記事を掻き集めることを練習しています。私はウェブページからテキストをサブストリング化する際にいくつか問題があります。組み込まれたrere_first関数を使用して検索を開始する場所を設定できますが、設定方法がわかりませんどこで終了するかScrapyの正規表現の使用

import scrapy 
from spider.items import Articles 
from scrapy.selector import Selector 
from scrapy.http import HtmlResponse 

class QuotesSpider(scrapy.Spider): 
    name = "lastampa" 
    allowed_domains = ['lastampa.it'] 

    def start_requests(self): 
     urls = [ 
       'http://www.lastampa.it/2017/10/26/economia/lavoro/datalogic-cerca-laureati-e-laureandi-per-la-ricerca-e-sviluppo-rPsS8gVM5ZX7gEZcugklwJ/pagina.html' 
       ] 

     yield scrapy.Request(url=url, callback=self.parse) 

    def parse(self, response): 

     items = [] 

     item = Articles() 
     item['date'] = response.xpath('//div[contains(@class, "ls-articoloDataPubblicazione")]').re_first(r'content=\s*(.*)') 
     item['author'] = response.xpath('//div[contains(@class, "ls-articoloAutore")]').re_first(r'">\s*(.*)') 
     item['title'] = response.xpath('//div[contains(@class, "ls-articoloTitolo")]').re_first(r'<h3>\s*(.*)') 
     item['subtitle'] = response.xpath('//div[contains(@class, "ls-articoloCatenaccio")]').re_first(r'">\s*(.*)') 
     item['text'] = response.xpath('//div[contains(@class, "ls-articoloTesto")]').re_first(r'<p>\s*(.*)') 
     items.append(item) 

さて、このコードで、私はパスの終わりまでに必要なテキストだけでなく、すべての次のタグを取得することができます:ここで は、コードの後に​​続きます。例:

'subtitle': 'Gli inserimenti saranno in Italia, Stati Uniti, Cina, Vietnam</div>' 

どのように私は(定義されたポイントの後またはその他の文字)終了</div>を逃れることができますか? 誰かがこれに対してライトをオンにすることはできますか?ありがとう

答えて

0

要素からテキストを抽出するだけでよい場合は、このような正規表現を使いこなす必要はありません。 XPath式ではtext()を使用してください。 subtitleフィールドについては、例えば、使用してそれを抽出します。

あなたの例では、生成されます、
item['subtitle'] = response.xpath('//div[contains(@class, "ls-articoloCatenaccio")]/text()').extract_first().strip() 

を:

u'Gli inserimenti saranno in Italia, Stati Uniti, Cina, Vietnam' 

textをそれが子要素に広がっていて、もう少し複雑です。それだ

u'Datalogic, leader mondiale nelle tecnologie di identificazione automatica dei dati e dei processi di automazione industriale, ha lanciato la selezione di giovani talenti laureati o laureandi in ingegneria e/o in altre materie scientifiche che abbiano voglia di confrontarsi con una realt\xe0 internazionale. Il primo step delle selezioni si \xe8 tenuto in occasione dell\u2019Open Day: i candidati hanno sostenuto un primo colloquio con senior manager nazionali e internazionali, arrivati per l\u2019occasione anche da sedi estere. Durante l\u2019Open Day \xe8 stata presentata l\u2019azienda insieme alle 80 posizioni aperte di cui una cinquantina in Italia. La ricerca dei candidati \xe8 rivolta a laureandi e neolaureati di tutta Italia interessati a far parte di una realt\xe0 dinamica e internazionale, provenienti da Facolt\xe0 tecnico-scientifiche quali Ingegneria, Fisica, Informatica.Ai giovani verr\xe0 proposto un interessante percorso di carriera che permetter\xe0 di approfondire e sviluppare tecnologie all\u2019avanguardia nei 10 centri di Ricerca dell\u2019azienda dislocati tra Italia, Stati Uniti, Cina e Vietnam, dove si ha l\u2019opportunit\xe0 di approfondire tutte le tematiche relative all\u2019elettronica e al software design: dallo sviluppo di sistemi operativi mobili, di sensori laser e tecnologie ottiche, allo studio di sistemi di intelligenza artificiale. Informazioni sul sito www.datalogic.com.Alcuni diritti riservati.' 
+0

:生成されます

item['text'] = ''.join([x.strip() for x in response.xpath('//div[contains(@class, "ls-articoloTesto")]//text()').extract()]) 

:しかし、あなたはこのような1つの文字列としての後処理それと店舗、そこからそれを抽出することができます!おかあさんトーマス – Fulviooo

関連する問題