我正在尝试在此 page 中使用 scrapy提取元素中的电话号码:
sel = selector(response)
sel.xpath('.//*[@class="ProfileSimpleContact-item"]/span/span/text()').extract()
但这会返回:
['(11) 98528-27...']
我想获得完整的数字(不带“...”),它只会在动态单击 react ID 时出现。我怎样才能得到它?
最佳答案
您可以使用 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"]
关于python - 抓取 react-id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52022266/