Сбор информации для одного результата на странице с несколькими результатами - PullRequest
1 голос
/ 30 марта 2019

Я хотел бы очистить / проанализировать данные для конкретного результата со страницы с несколькими результатами.

Например, ниже приведен фрагмент исходного html-страницы, на которой есть два результата для бизнес-поиска в бизнес-каталоге. Оба имеют бизнес-элементы, такие как Статус. Однако мне нужны только те товары, которые связаны с адресом улицы 311 South Swall Drive.

</section><section itemscope itemtype="http://schema.org/Organization" class="org">
<div class="b-business-item">
<div class='b-business-item_header-wrap  '>
<div class='b-business-item_title-wrap'>
<h2 class="b-business-item_header uppercase"><a itemprop="url" href="/p/kash+apparel+lp-12645872"><font itemprop="name">Kash Apparel, Lp</font></a></h2>

<p class="b-business-item_sub-header"><span class="addr-cont" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"><span itemprop="streetAddress">2615 Fruitland Ave</span>, <span><span itemprop="addressLocality">Los Angeles</span>, <span itemprop="addressRegion">CA</span> <span itemprop="postalCode">90058</span></span></span></p>
</div>
</div>
<p class="b-business-item_props"><span class="b-business-item_title">Status:</span><span class="b-business-item_value">Inactive</span></p>
<p class="b-business-item_props"><span class="b-business-item_title">Industry:</span><span class="b-business-item_value">Mfg Women's/Misses' Outerwear</span></p>
<p class="b-business-item_props"><span class="b-business-item_title">Members (3):</span><span class="b-business-item_value">Mel Salde <span class='gray-text'>(Accountant, inactive)</span><br/>Edir Haroni <span class='gray-text'>(Limited Partner, inactive)</span><br/>Stephanie Kleinjan <span class='gray-text'>(General Partner, inactive)</span></span></p>
</div>
</section><section itemscope itemtype="http://schema.org/Organization" class="org">
<div class="b-business-item">
<div class='b-business-item_header-wrap  '>
<div class='b-business-item_title-wrap'>
<h2 class="b-business-item_header uppercase"><a itemprop="url" href="/p/kash+inc-178509132"><font itemprop="name">KASH INC</font></a></h2>

<p class="b-business-item_sub-header"><span class="addr-cont" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"><span itemprop="streetAddress">311 South Swall Drive</span>, <span><span itemprop="addressLocality">Los Angeles</span>, <span itemprop="addressRegion">CA</span> <span itemprop="postalCode">90048</span></span></span></p>
</div>
</div>
<p class="b-business-item_props"><span class="b-business-item_title">Status:</span><span class="b-business-item_value">Inactive</span></p>
<p class="b-business-item_props"><span class="b-business-item_title">Registration:</span><span class="b-business-item_value">Sep 26, 2006</span></p>
<p class="b-business-item_props"><span class="b-business-item_title">State ID:</span><span class="b-business-item_value">C2904860</span></p>
<p class="b-business-item_props"><span class="b-business-item_title">Business type:</span><span class="b-business-item_value">Articles of Incorporation</span></p>
<p class="b-business-item_props"><span class="b-business-item_title">Member:</span><span class="b-business-item_value">Ashwant Venkatram <span class='gray-text'>(President, inactive)</span></span></p>

Я пытаюсь очистить статус, регистрацию, идентификатор штата, тип бизнеса и участника для 311 South Swall Drive, а не аналогичные поля для другого результата. К сожалению, в бизнес-справочнике нет способа ввести адрес, чтобы сузить поиск до одного результата.

1 Ответ

0 голосов
/ 30 марта 2019

Я думаю, это то, что вы ищете:

for sect in soup.find_all('section'):
  for adrs in sect.select('span[itemprop="streetAddress"]'):
    if adrs.text == '311 South Swall Drive':
        for item in sect.select('p'):
            print(item.text)

Вывод:

311 South Swall Drive, Los Angeles, CA 90048
Status:Inactive
Registration:Sep 26, 2006
State ID:C2904860
Business type:Articles of Incorporation
Member:Ashwant Venkatram (President, inactive)
...