Mein Code funktioniert nicht richtig.Wie kann ich Scrapy verwenden, um Text auf zwei Ebenen zu extrahieren?
Die zweite for-Schleife erhält nicht den gesamten Text.
Wie kann ich das in scrapy tun?
Danke für irgendwelche Tipps und lassen Sie mich wissen, wenn ich etwas vermisse.
<dl>
<dt>Release Date:</dt>
<dd>Aug. 01, 2016<br>
</dd>
<dt>Runtime:</dt>
<dd itemprop="duration">200min.<br></dd>
<dt>Languages:</dt>
<dd>Japanese<br></dd>
<dt>Subtitles:</dt>
<dd>----<br></dd>
<dt>Content ID:</dt>
<dd>8dtkm00045<br></dd>
<dt>Actress(es):</dt>
<dd itemprop="actors">
<span itemscope="" itemtype="http://schema.org/Person">
<a itemprop="name">Shinobu Oshima</a>
</span>
<span itemscope="" itemtype="http://schema.org/Person">
<a itemprop="name">Yukie Mizukami</a>
</span>
</dd>
Spider:
def parse_item(self, response):
for sel in response.xpath('//*[@id="contents"]/div[10]/section/section[1]/section[1]'):
item = EnMovie()
Content_ID = sel.xpath('normalize-space(div[2]/dl/dt[contains (.,"Content ID:")]/following-sibling::dd[1]/text())').extract()
item['Content_ID'] = Content_ID[0].encode('utf-8')
release_date = sel.xpath('normalize-space(div[2]/dl[1]/dt[contains (.,"Release Date:")]/following-sibling::dd[1]/text())').extract()
item['release_date'] = release_date[0].encode('utf-8')
running_time = sel.xpath('normalize-space(div[2]/dl[1]/dt[contains (.,"Runtime:")]/following-sibling::dd[1]/text())').extract()
item['running_time'] = running_time[0].encode('utf-8')
Series = sel.xpath('normalize-space(div[2]/dl[2]/dt[contains (.,"Series:")]/following-sibling::dd[1]/text())').extract()
item['Series'] = Series[0].encode('utf-8')
Studio = sel.xpath('normalize-space(div[2]/dl[2]/dt[contains (.,"Studio:")]/following-sibling::dd[1]/a/text())').extract()
item['Studio'] = Studio[0].encode('utf-8')
Director = sel.xpath('normalize-space(div[2]/dl[2]/dt[contains (.,"Director:")]/following-sibling::dd[1]/text())').extract()
item['Director'] = Director[0].encode('utf-8')
Label = sel.xpath('normalize-space(div[2]/dl[2]/dt[contains (.,"Label:")]/following-sibling::dd[1]/text())').extract()
item['Label'] = Label[0].encode('utf-8')
item['image_urls'] = sel.xpath('div[1]/img/@src').extract()
for actress in sel.xpath("//*[@itemprop='actors']//*[@itemprop='name']"):
actress_ = actress.xpath("text()").extract()
item['Actress'] = actress_[0].strip()
yield item
Teilweise arbeitet Spinne gut (mit Ausnahme der zweiten zur Schleife) Zweite für Schleifenausbeute nur die letzte [itemprop = "name"] Wert und gespeichert DB..
Entschuldigung für mein schlechtes Englisch und Danke für irgendwelche Tipps.
Ist das zusätzliche Leerzeichen an der ersten Zeile in der zweiten 'for' Schleife das Problem? – mitoRibo
Also, brauchst du ein separates EnMovie-Objekt für jede Schauspielerin? Oder brauchst du eine Liste mit allen Schauspielerinnen aus dem Film in dem Artikel? –
Ich brauche ein separates EnMovie-Element für jede Schauspielerin! – Jin