XPath: выбор определенных дочерних узлов
м используюXPath
сScrapy
соскрести данные с сайта фильма BoxOfficeMojo.com.
Как общий вопрос: яинтересно, как выбрать определенные дочерние узлы одного родительского узла все в одномXpath
строка.
В зависимости от веб-страницы фильма, с которой ям, иногда данные, которые мне нужны, находятся на разных дочерних узлах, например, есть ли ссылка или нет. Я посмотрю около 14000 фильмов, поэтому этот процесс должен быть автоматизирован.
С помощьюэтот В качестве примера. Мне понадобятся актер (ы), режиссер (ы) и продюсер (ы).
ЭтоXpath
директору:Заметка:% S соответствует определенному индексу, где эта информация найдена - в примере действия Джексонаdirector
находится в[1]
а такжеactors
в .[2]
//div[@class="mp_box_content"]/table/tr[%s]/td[2]/font/text()
Однако, если бы существовала ссылка на страницу директора, это было бы:Xpath
//div[@class="mp_box_content"]/table/tr[%s]/td[2]/font/a/text()
Актеры немного сложнее, так как<br>
включены для последующих перечисленных актеров, которые могут быть детьми/a
или дети родителя/font
, так:
//div[@class="mp_box_content"]/table/tr[%s]/td[2]/font//a/text()
Получает все большинство всех актеров (кроме тех, сfont/br
).
Теперь главная проблема, я полагаю, заключается в том, что//div[@class="mp_box_content"]
- все, что у меня есть, за исключением того, что я также получаю некоторые цифры от другихmp_box_content
, Также я добавил множество,try:
except:
заявления, чтобы получить все (актеры, режиссеры, продюсеры, которые имеют и не имеют ссылки, связанные с ними). Например, следующее моеScrapy
код для актеров:
actors = hxs.select('//div[@class="mp_box_content"]/table/tr[%s]/td[2]/font//a/text()' % (locActor,)).extract()
try:
second = hxs.select('//div[@class="mp_box_content"]/table/tr[%s]/td[2]/font/text()' % (locActor,)).extract()
for n in second:
actors.append(n)
except:
actors = hxs.select('//div[@class="mp_box_content"]/table/tr[%s]/td[2]/font/text()' % (locActor,)).extract()
Это попытка скрыть факты, которые: у первого актера может не быть ссылки, связанной с ним / ней, а у последующих актеров, у первого актера может быть ссылка, связанная с ним / ней, а у остальных - нет.
Я ценю время, потраченное на прочтение этого, и любые попытки помочь мне найти / решить эту проблему! Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.