2015-06-03 2 views
1

Я пытаюсь скрести данные (с помощью Scrapy) из таблиц, которые можно найти здесь:Возникли проблемы выбора некоторые конкретные ... XPath (HTML таблица, SCRAPY, XPath)

http://www.bettingtools.co.uk/tipster-table/tipsters

Мой паук функции, когда я анализирую ответ в следующем: XPath
//*[@id="imagetable"]/tbody/tr

Каждая таблица на акции страниц, идентификатор, так что я в основном хватая все данные таблицы.

Однако мне нужны только данные таблицы за текущий месяц (таблицы в правом столбце).

Когда я пытаюсь быть более конкретным с моим xpath, я получаю неверную ошибку xpath, даже если она кажется правильной. Я пробовал:

- //*[@id="content"]/[contains(@class, "column2")]/[contains(@class, "table3")]/[@id="imagetable"]/tbody/tr 
- //*[@id="content"]/div[contains(@class, "column2")]/div[contains(@class, "table3")]/[@id="imagetable"]/tbody/tr 
- //*[@id="content"]/div[2]/div[1]/[@id="imagetable"]/tbody/tr 

Кроме того, когда я пытаюсь выбрать из XPath конкретной таблицы на странице с хромом я просто получить //*[@id="imagetable"].

Я пропускаю что-то очевидное здесь? Почему 3 примера xpath, которые я пробовал, недействительны?

Благодаря

ответ

1

Что делает эти 3 недопустимое XPath является частью этой схеме:

/[predicate expression here] 

выше XPath пропустил, чтобы выбрать узел, на котором будет применяться предикат. Он должен скорее выглядит следующим образом:

/*[predicate expression here] 

Вот некоторые примеры годных:

1. /table[@id="imagetable"] 
2. /div[contains(@class, "column2")] 
3. /*[contains(@class, "table3")] 

Для этой конкретной задачи, вы можете попробовать следующее XPath, который выбирает строку из table внутри <div class="column2">:

//div[@class='column2']//table[@id="imagetable"]/tbody/tr 
+0

Спасибо, что сработало. Любая идея, где моя идет не так? – preach

0

Отметьте мой андерсор Selenium automation- finding best xpath. Короче проверьте его браузером, браузер может предоставить U уникальный локатор, а затем проверить его.