Вы можете использовать splash в качестве последнего варианта, это приведет к тому, что ваш паук будет дороже и сложнее.
К счастью, в вашем случае вы можете использовать один из тегов <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"]