проблема с получением текста из записи xpath в python - PullRequest
0 голосов
/ 14 февраля 2012

Я на веб-сайте

http://www.baseball -reference.com / Players / Event_hr.cgi? Id = bondba01 & t = b

и пытаюсь очиститьДанные из таблиц.Когда я извлекаю xpath из одной записи, произнесите кувшин «Терри Малхолланд», я получаю следующее:

pitchers = site.xpath("/html/body/div[2]/div[2]/div[6]/table/tbody/tr/td[3]/table/tbody/tr[2]/td/a)

Когда я пытаюсь напечатать pitcher[0].text для кувшина в принтерах, я получаю [] вместоthe text, есть идеи почему?

1 Ответ

1 голос
/ 14 февраля 2012

Проблема в том, что последний tbody не существует в оригинальном источнике. Если вы получили этот xpath через какой-либо браузер, имейте в виду, что браузеры могут угадывать и добавлять недостающие элементы, чтобы сделать HTML действительным.

Удаление последней tbody решает проблему.

In : import lxml.html as html

In : site = html.parse("http://www.baseball-reference.com/players/event_hr.cgi?id=bondsba01&t=b")

In : pitchers = site.xpath("/html/body/div[2]/div[2]/div[6]/table/tbody/tr/td[3]/table/tr[2]/td/a")

In : pitchers[0].text
Out: 'Terry Mulholland'

Но мне нужно добавить, что используемое вами выражение xpath довольно хрупкое. Один div добавлен в каком-то удобном месте, и теперь у вас сломан скрипт. Если возможно, попытайтесь найти более подходящие ссылки, такие как id или class, которые указывают на ваше ожидаемое местоположение.

...