Прежде всего, это спавн моего предыдущего вопроса . Я опубликовал это снова, потому что мне посоветовал сделать это человек, чей ответ я принял в первоначальном посте , поскольку он чувствовал, что вопрос не был должным образом определен ранее. Здесь идет попытка 2:
Я пытаюсь получить информацию с этой веб-страницы . Для ясности ниже выбор блока источника страницы:
<p class="titlestyle">ANT101H5 Introduction to Biological Anthropology and Archaeology
<span class='distribution'>(SCI)</span></p>
<span class='normaltext'>
Anthropology is the global and holistic study of human biology and behaviour, and includes four subfields: biological anthropology, archaeology, sociocultural anthropology and linguistics. The material covered is directed to answering the question: What makes us human? This course is a survey of biological anthropology and archaeology. [<span class='Helpcourse'
onMouseover="showtip(this,event,'24 Lectures')"
onMouseout="hidetip()">24L</span>, <span class='Helpcourse'
onMouseover="showtip(this,event,'12 Tutorials')"
onMouseout="hidetip()">12T</span>]<br>
<span class='title2'>Exclusion: </span><a href='javascript:OpenCourse("WEBCOURSENOTFOUND.html")'>ANT100Y5</a><br>
<span class='title2'>Prerequisite: </span><a href='javascript:OpenCourse("WEBCOURSEANT102H5.pl?fv=1")'>ANT102H5</a><br>
Из приведенного выше примера блока я хотел бы извлечь следующую информацию:
ANT101H5 Introduction to Biological Anthropology and Archaeology
Exclusion: ANT100Y5
Prerequisite: ANT102H5
Я хотел бы получить всю такую информацию с веб-страницы (имейте в виду, что на некоторых курсах может быть дополнительно указан «Corequisite», а также могут отсутствовать предварительные / дополнительные реквизиты или исключения из списка).
Я пытался написать соответствующее выражение xpath для этой задачи, но мне кажется, что я не могу сделать это правильно.
Пока с помощью Dimitre Novatchev я смог использовать следующее выражение:
sites = hxs.select("(//p[@class='titlestyle'])[2]/text()[1] | (//span[@class='title2'])[2]/text() | \
(//span[@class='title2'])[2]/following-sibling::a[1]/text() | (//span[@class='title2'])[3]/text() | \
(//span[@class='title2'])[3]/following-sibling::a[1]/text()")
Тем не менее, он производит следующий вывод, который, кажется, получает информацию только для курса first на странице:
[{"desc": "ANT101H5 Introduction to Biological Anthropology and Archaeology \n "},
{"desc": "Exclusion: "},
{"desc": "ANT100Y5"},
{"desc": "Prerequisite: "},
{"desc": "ANT102H5"}]
Просто чтобы быть абсолютно ясным, этот вывод верен только в том случае, если он получает правильную информацию относительно первого курса. Мне нужна правильная информация, подобная этой, для всех курсов, перечисленных на этой веб-странице.
Я так близко, но мне кажется, что я не могу понять этот последний шаг.
Буду признателен за любую помощь ... заранее спасибо