Выскабливая идентификатор реакции

1

Я пытаюсь использовать scrapy на этой странице, чтобы извлечь номер телефона в элементе:

sel = selector(response)
sel.xpath('.//*[@class="ProfileSimpleContact-item"]/span/span/text()').extract()

но это возвращает:

['(11) 98528-27...']

Я хочу получить полный номер (без "..."), который появляется только при динамическом нажатии на идентификатор реакции. Как я могу его получить?

Теги:
scrapy
python-2.7

1 ответ

4
Лучший ответ

Вы можете использовать всплеск в качестве последней опции, это приведет к тому, что ваш паук будет более дорогим и сложным.

К счастью, в вашем случае вы можете использовать один из тегов <script> для получения требуемых данных.

Сначала вам нужно получить правильный <script>:

ans = response.xpath("//script[contains(text(),'telephone')]/text()").extract_first()

Это дает вам json вот так:

{
    "@context": "http://schema.org",
    "@type": "Person",
    "name": "Cynthia Hóss Rocha",
    "description": "advogada há 15 anos.",
    "telephone": "(11) 985282712",
    "image": "imgs.jusbr.com/profiles/5368773/images/1419878998_standard.jpg",
    "jobTitle": "Advogado",
    "url": "https://cynthiahossrocha.jusbrasil.com.br",
    "address": {
        "@type": "PostalAddress",
        "addressLocality": "São Paulo (SP)",
        "streetAddress": "Rua Marconi, 131",
        "postalCode": "01047-000"
    }
}

Чтобы преобразовать его в объект, вам нужно import json и использовать json.loads:

json_ans = json.loads(ans)

Наконец, вам нужно только извлечь требуемое значение:

phone = json_ans["telephone"]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню