Also hier ist meine Scrapy Crawler-Code. Ich versuche, Metadatenwerte von einer Website zu extrahieren. Auf einer Seite werden keine Metadaten mehr als einmal angezeigt. SoScrapy/Python: Ersetzen leere Zeichenfolge
class MySpider(BaseSpider):
name = "courses"
start_urls = ['http://www.example.com/listing']
allowed_domains = ["example.com"]
def parse(self, response):
hxs = Selector(response)
#for courses in response.xpath(response.body):
for courses in response.xpath("//meta"):
yield {
'ScoreA': courses.xpath('//meta[@name="atarbur"]/@content').extract_first(),
'ScoreB': courses.xpath('//meta[@name="atywater"]/@content').extract_first(),
'ScoreC': courses.xpath('//meta[@name="atarsater"]/@content').extract_first(),
'ScoreD': courses.xpath('//meta[@name="clearlywaur"]/@content').extract_first(),
}
for url in hxs.xpath('//ul[@class="scrapy"]/li/a/@href').extract():
yield Request(response.urljoin(url), callback=self.parse)
, was ich versuche zu erreichen ist, dass, wenn die Werte eines der Ergebnisse ist eine leere Zeichenfolge (‚‘), ich habe es mit 0 (Null) bis repalce wollen. Ich bin mir nicht sicher, wie ich bedingte Logik innerhalb des 'Yield'-Blocks hinzufügen kann.
Jede Hilfe wird sehr geschätzt. aber in Ihrem Fall
Dank
arbeitete wie ein Charme. Vielen Dank. Schnelle Frage: Der obige Code gibt numerische Werte als Zeichenfolge zurück, d. H. In Anführungszeichen eingeschlossen. Weißt du wie ich Werte ohne Anführungszeichen zurückgeben kann? – Slyper
@Slyper Ja, scrapy gibt immer entweder einen String oder eine Liste von Strings für 'extract()' und 'extract_first()' zurück. Sie können es jedoch in 'float' oder' int' Typen konvertieren; Siehe meine Bearbeitung. – Granitosaurus
Großartig, Danke nochmal. – Slyper