Ваш xpath выбран неверно.
В настоящее время ваш td
является элементом списка, который содержит все ссылки и выглядит примерно так:
['/ ilan / sahibinden-satilik-peugeot-407-1-6-hdi-millesim / 111-bin-km-de-efsane-d-сегмента / 14278421 ',
' / ilan / galeriden-satilik-seat-le-on-1-6-tdi-style / simsek-ten-2016-leon- cam-tavan-dsg-led-katlanir-ayna / 13804838 ',
' / ilan / galeriden-satilik-skoda-favitit-135-lx / aci ll-satilik-firsat-araci / 13027823 ',
. ..]
Затем вы разбиваете его на sla sh, получаете элемент №. 3 и снова разделить его на da sh, который возвращает что-то подобное для каждого td:
['111', 'bin', 'km', 'de', 'efsane', 'd', ' сегмент ']
[' simsek ',' ten ',' 2016 ',' leon ',' cam ',' tavan ',' dsg ',' led ',' katlanir ',' ayna ']
['acill', 'satilik', 'firsat', 'araci']
Как вы видите в этом примере, ваш код будет работать только для второй ссылки, так как содержит год, который вы ищете ( 2016> 2010). Другие ссылки просто не содержат год, поэтому ваш код не работает для них. Вместо этого вы должны получить информацию о году из таблицы, а не по ссылке.
Я рекомендую использовать оболочку scrapy для поиска правильного селектора, потому что вы можете в интерактивном режиме проверить свой выбор xpath или css и посмотреть, что именно ваш результат будет выглядеть так ( см. этот официальный пример ).
Следующее определение синтаксического анализа должно работать для вас:
def parse(self, response):
rows = response.css('.listing-list-item') # extract all rows
for row in rows:
year = row.css('td:nth-child(4) a::text').extract_first() # extract year from every row
if int(year) > 2010:
suburl = row.css('td:nth-child(4) a::attr(href)').extract_first()
url = "https://www.arabam.com" + suburl # create new url
yield scrapy.Request(url, callback=self.parse_dir_contents) # request new url
Код сначала получает каждую строку таблица, затем получает год для строки, и если этот год> 2010, он создает новый URL и запрашивает его.
Этот код будет работать при условии, что вы где-то определили свой метод parse_dir_contents-method.