Scrapy выделяет не элементы первого ребенка, а всех детей - PullRequest
1 голос
/ 28 октября 2019

Имеется этот HTML:

<table class="myTable>
    <tbody>
        <tr>A1</tr>
        <tr>A2</tr>
    </tbody>
<table>

<table class="myTable>
    <tbody>
        <tr>A1</tr>
        <tr>A2</tr>
    </tbody>
<table>

<table class="myTable>
    <tbody>
        <tr>A1</tr>
        <tr>A2</tr>
    </tbody>
<table>

Я хочу извлечь A1 и A2 только один раз. Итак, у меня есть выбор:

table = response.xpath('.//table[@class="myTable"]')[0]
row = table.xpath("//tr")

Однако при проверке len(row) я получаю 6 вместо 2, хотя я проверил len(table) и получаю только 1 (только для первой таблицы). Как мне тогда выбрать?

1 Ответ

1 голос
/ 28 октября 2019

Вам нужно использовать относительно XPath:

row = table.xpath(".//tr")

Или вы можете использовать это для работы с первой таблицей на странице:

rows = response.xpath('(//table[@class="myTable"])[1]//tr')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...