Как получить <p>элементов, чьи теги <h3> заключают в себе слова «Контакт:», используя ответ scrapy - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь удалить только контактную информацию из базы данных, используя оболочку scrapy ...

<div class="info-section">
                    <h3>State(s) Served:</h3>
                    <p>Nationwide (US)</p>  </div>
<div class="info-section">
                    <h3>Year Founded:</h3>
                    <p>1985</p>  </div>

<div class="info-section">
                    <h3>Description:</h3>
                    <p>Corporate tax accounting/consulting. Specialties:  280E Compliance/Planning, Research & Development Tax Credits, Cost Segregation, IRS Representation, Certified Financial Auditing.</p> </div>
                                    <div class="info-section">
                        <h3>Contact:</h3>
                        <p><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="93f1e1eaf2fdd3f0e3f2fef7bdf0fcfe">[email&#160;protected]</a> | 847-382-1166 X28</p>
                    </div>

Я выбрал раздел информации, используя sel = response.css('.info-section'), а затем могу перебрать pэлементы, но как выбрать только тег <h3>, который содержит контактную информацию, а затем получить текст <p>?

1 Ответ

1 голос
/ 26 апреля 2019

Если вам нужно взять текст <p> после <a> с электронной почтой, вы можете попробовать это:

>>> txt = """<div class="info-section">
...                     <h3>State(s) Served:</h3>
...                     <p>Nationwide (US)</p>  </div>
... <div class="info-section">
...                     <h3>Year Founded:</h3>
...                     <p>1985</p>  </div>
... 
... <div class="info-section">
...                     <h3>Description:</h3>
...                     <p>Corporate tax accounting/consulting. Specialties:  280E Compliance/Planning, Research & Development Tax Credits, Cost Segregation, IRS Representation, Certified Financial Auditing.</p> </div>
...                                     <div class="info-section">
...                         <h3>Contact:</h3>
...                         <p><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="93f1e1eaf2fdd3f0e3f2fef7bdf0fcfe">[email&#160;protected]</a> | 847-382-1166 X28</p>
...                     </div>"""
>>> from scrapy import Selector
>>> sel = Selector(text=txt)
>>> sel.xpath('//h3[contains(text(), "Contact")]/following-sibling::p/a/following-sibling::text()').get()
u' | 847-382-1166 X28'

Или даже короче, как сказал @Jack Fleeting:

>>> sel.xpath('//h3[contains(text(), "Contact")]/following-sibling::p/text()').get()
u' | 847-382-1166 X28'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...