Python xpath захватывает все <tr>и проходит через них, получая доступ к sub xpath - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь l oop через все <tr> элементы, передать их в for l oop и получить доступ к дочерним данным, содержащимся в th

Только это выглядит как * В приведенном ниже примере 1006 * пусто и l oop не доступно

вопрос

как мне получить все <tr> узлы, а затем l oop через них получить доступ к sub xpath для <th>?

код

    data_template = response.xpath('//div[@id="product-options-wrapper"]/table/thead/tr')
    print('before loop')
    for i, data_row in enumerate(data_template):
        print('start of datarow')
        if i == 0:
            print('1st data row')
            sizes = data_row.xpath('/th').getall()
            continue
        else:
            print('2nd datarow')

Пример данных

enter image description here

На странице

enter image description here

Python код


    def parse_list(self, response):
        for url in response.xpath('.//div[@itemprop="itemListElement"]/a/@href').getall():
            yield Request(url=url, callback=self.parse_detail, meta=response.meta)

    def parse_detail(self, response):
        item = DynamicItem()
        item['meta'] = response.meta
        item['url'] = response.url
        print(item['url']) # Works fine
        item['name'] = response.xpath('//span[@itemprop="name"]/text()').get()
        print(item['name']) # Strange keeps giving the same name after url 1, so for url 2 and for 3 etc
        data_template = response.xpath('//div[@id="product-options-wrapper"]/table/thead/tr')
        print(data_template) # Empty? But there should be 3 results!!

1 Ответ

0 голосов
/ 31 марта 2020

XPath похож на UNIX путь. «./» обозначает текущий узел как текущий каталог в UNIX.

data_row.xpath('./th').getall()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...