python - 抓取 react-id

标签 python python-2.7 scrapy

我正在尝试在此 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/

相关文章:

python - 2 个地 block 的交集(鼠尾草)

python - 在特定条件下连接两个数组?

python - Pytest:KeyError:WindowsPath ('D:/Local_Project_Directory/Lib/site-packages/matplotlib/testing/conftest.py')

python - C :\Python37\python. exe: 无法打开文件 'scrapy' : [Errno 2] 没有这样的文件或目录

python - recaptcha 没有通过 selenium python 中的 anticaptcha 插件解决

python - 如何建立值(value)观之间的关系?

python - 在垃圾箱之间平均分配一个数字

python - 注释掉的函数和 "comma splice"的作用是什么?

python - 套接字错误 : [Errno 111] Connection refused

csv - scrapy如何将项目导出为每个项目单独的csv文件