2015-10-12 2 views
1

Я использую scrapy 1.0.3. Вот мой код файла-паука,Я получаю все якорные ссылки вместо конкретной ссылки в scrapy

from scrapy import Spider 
from scrapy.selector import Selector 
from parser_xxx.items import XxxItem 

class XxxSpider(Spider): 
    name = "xxx" 
    allowed_domains = ["xxx.xxx.com"] 
    start_urls = ["http://xxx.xxx.com/jobs/"] 

    def parse(self, response): 
     quelist = Selector(response).xpath('//div[@id="job_listings"]') 
     for que in quelist: 
      item = XxxItem() 
      item['title'] = que.xpath('//a//h4/text()').extract() 
      item['link'] = que.xpath('//a/@href').extract() 
      yield item 

Но, я получаю все якорные ссылки и все заголовки. Где я ошибаюсь?

Заранее благодарен!

ответ

0

Вы должны сделать выражения XPath контекстно-зависимыми, добавив точку. Кроме того, я думаю, вы должны пройти по ссылкам внутри div с id="job_listings":

quelist = response.xpath('//div[@id="job_listings"]//a') 
for que in quelist: 
    item = XxxItem() 

    item['title'] = que.xpath('.//h4/text()').extract() 
    item['link'] = que.xpath('@href').extract() 

    yield item 
+0

Спасибо! Я помню. –

+0

Теперь он работает правильно. –

+0

@MayurKoshti рада помочь. Также обратите внимание, что здесь вы можете использовать ярлык 'response.xpath()'. – alecxe

Смежные вопросы