目标网页为here,其中有两种类型的帖子:
内部帖子的网络链接位于以下HTML代码中:
<a class="ga_job" href="/jobseeker/job/26930563/blablabla">
外部帖子的网络链接使用不同的HTML代码:
<a class="ga_job" onclick="window.open('http://www.indeed.com/rc/blablalbla','_blank');return false;" href="#">
我想要实现的是:如果@href包含合法的网络链接(用于内部帖子),我将使用以下代码来获取网络链接:
il.add_xpath('web_url', 'concat("http://careers.pathologyjobstoday.org", .//a[@class="ga_job"]/@href)')
如果@href仅包含&#34;#&#34; (对于外部帖子),我将使用以下代码进行网络链接:
il.add_xpath('web_url', 'substring-before(substring-after(.//a[@class="ga_job"]/@onclick, "("),"&qd=")')
我尝试了以下...其他代码,如下所示:
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()
我为web_url获得的结果只是@href(内部帖子的网络链接或外部帖子的#&#39;)。 if ... else命令不起作用。
答案 0 :(得分:0)
我的问题可以通过一起使用两个属性来解决:
il.add_xpath('web_url', 'substring-before(substring-after(.//a[@class="ga_job" and @href="#"]/@onclick, "(\'"),"&qd=")')
il.add_xpath('web_url', 'concat("http://careers.pathologyjobstoday.org", .//a[@class="ga_job"]/@href)')