Die Ziel Webseite here ist, in denen es zwei Arten von Beiträgen:Scrapy: Extrakt weblinks aus zwei verschiedenen Arten von Beiträgen
Die Weblink eines im Haus Post ist in den folgenden HTML-Code:
<a class="ga_job" href="/jobseeker/job/26930563/blablabla">
Die Weblink eines Externe Post ist in verschiedenen hTML-Code:
<a class="ga_job" onclick="window.open('http://www.indeed.com/rc/blablalbla','_blank');return false;" href="#">
Was ich versuche zu erreichen ist: wenn @href ein berechtigtes Weblink enthält (in-house Beiträge), werde ich den folgenden Code verwenden, um die Weblink zu erhalten:
il.add_xpath('web_url', 'concat("http://careers.pathologyjobstoday.org", .//a[@class="ga_job"]/@href)')
Wenn @href nur ein enthält " #“(für externe Beiträge), werde ich den folgenden Code für Weblink verwenden:
il.add_xpath('web_url', 'substring-before(substring-after(.//a[@class="ga_job"]/@onclick, "("),"&qd=")')
ich habe versucht, if ... else-Codes, wie folgend, die nicht arbeiten:
for site in sites:
il = CAPjobsItemLoader(response=response, selector=site)
il.add_xpath('web_url', './/a[@class="ga_job"]/@href') #Get the @href
HREF_value = il.get_collected_values('web_url')[0]
if '#' in HREF_value:
il.add_xpath('web_url', 'substring-before(substring-after(.//a[@class="ga_job"]/@onclick, "("),"&qd=")')
else:
il.add_xpath('web_url', 'concat("http://careers.pathologyjobstoday.org", .//a[@class="ga_job"]/@href)')
yield il.load_item()
die Ergebnisse Ich habe für uns b_url sind nur @href (ein Weblink für interne Posts oder ein '#' für externe Posts). Der Befehl if ... else funktioniert nicht.
ich zusammen mit Hilfe von zwei Attributen, eine Lösung heraus (Es geschah mehr als einmal, dass ich hier eine Lösung kurz nach der Einlieferung meiner Fragen gefunden.) Siehe unten – LearnAWK