Получение двух списков с использованием Xpath, которые содержатся в одном контейнере - PullRequest
0 голосов
/ 03 декабря 2018

В приведенном ниже примере кода я собираюсь извлечь, используя Xpath внутри Scrapy, сначала из списка 1, а затем из списка 2. Некоторые элементы могут быть связаны, в то время как другие являются просто элементами в списке.Мне нужно две строки (или списки), одна для списка 1 и одна для списка 2

	<div class="row">
		<div class="col-xs-12 no-padding-xs">
			<h3 class="text-primary gutter-xs">List 1</h3>
			<div class="well well-sm">
				<a href="/miniature.htm">Miniature</a>, <a href="/mustang.htm">Mustang</a>, <a href="/paintpony.htm">Paint Pony</a>, <a href="https://www.equinenow.com/browse-brf-pi">Pinto</a>, <a href="/pony.htm">Pony</a>, <a href="/poa.htm">POA</a>, <a href="/quarterpony.htm">Quarter Pony</a>, <a href="/shetlandpony.htm">Shetland Pony</a>, <a href="/spanishmustang.htm">Spanish Mustang</a>
			</div>
			<h3 class="text-primary gutter-xs">List 2</h3>
			<div class="well well-sm">
				<a href="/allaroundfarms.htm">All Around</a>, <a href="/drivingfarms.htm">Driving</a>, <a href="/halterfarms.htm">Halter</a>, <a href="/lessonfarms.htm">Lesson</a>, <a href="/naturalhorsemanshipfarms.htm">Natural Horsemanship</a>, <a href="/showfarms.htm">Show</a>, Trail Riding, <a href="/westernpleasurefarms.htm">Western Pleasure</a>, Western Riding, <a href="/youthfarms.htm">Youth</a>, Champion Trainer, POA Ponies for Sale, Newaygo County, Horse Boarding, Equestrian Coaching, Michigan, Riding Lessons, Horse Lea
			</div>
		</div>
	</div>

1 Ответ

0 голосов
/ 03 декабря 2018

Не уверен, что я вас правильно понял, но вы можете попробовать:

from w3lib.html import remove_tags

for list_text in ['List 1', 'List 2']:
    div_data = response.xpath('//h3[text()="{}"]/following-sibling::div[1]'.format(list_text)).get()
    if not div_data:
         continue
    print [remove_tags(i).strip() for i in div_data.split(',')]

Или, если хотите, просто строки:

for list_text in ['List 1', 'List 2']:
    div_data = response.xpath('//h3[text()="{}"]/following-sibling::div[1]'.format(list_text)).get()
    if not div_data:
         continue
    print remove_tags(div_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...