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()

Это попытка скрыть факты, которые: у первого актера может не быть ссылки, связанной с ним / ней, а у последующих актеров, у первого актера может быть ссылка, связанная с ним / ней, а у остальных - нет.

Я ценю время, потраченное на прочтение этого, и любые попытки помочь мне найти / решить эту проблему! Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Ответы на вопрос(1)

Ваш ответ на вопрос