python - 如何获取HTML Script标签的内容

标签 python pandas scrapy

我正在尝试从 URL 中抓取地理数据以进行抓取练习。但我在处理脚本标记的内容时遇到了麻烦。

以下是脚本标签的内容:

<script type="application/ld+json">
    {
     "address": {
            "@type": "PostalAddress",
            "streetAddress": "5080 Riverside Drive",
            "addressLocality": "Macon",
            "addressRegion": "GA",
            "postalCode": "31210-1100",
            "addressCountry": "US"
        },
        "telephone": "478-471-0171",
        "geo": {
            "@type": "GeoCoordinates",
            "latitude": "32.9252435",
            "longitude": "-83.7145993"
        }
    }
    </script>

我想将脚本标签的内容(城市、州、纬度、经度和电话号码)添加到我的结果中。

以下是我的代码(不完整):

def parse(self,response)
    items = MyItem()
    tree = Selector(response)

    items['city'] = tree.xpath('//script/text()').extract()[0]
    items['state'] = tree.xpath('//script/text()').extract()[0]
    items['latitude'] = tree.xpath('//script/text()').extract()[0]
    items['longitude'] = tree.xpath('//script/text()').extract()[0]
    items['telephone'] = tree.xpath('//script/text()').extract()[0]
    print(items)
    yield items

我可以获得有关如何实现这一目标的任何建议吗?

最佳答案

我不明白你想用重复的 xpath 查询做什么 //item/title/text() 。请注意,xpath 对于提取 HTML 内容很有用。 <script>的内容您问题中的 tag 不是 HTML,因此无法使用 xpath 进行查询。

第一步,您可以获得 <script> 的内容标签:

content = tree.xpath('//script/text()').extract()[0]

然后您可以使用json将 json 内容加载到 Python 字典中的包:

d = json.loads(content)

另请注意 <script> 中的 JSON在你的例子中是无效的, 它缺少一个右大括号。 上述方法仅适用于有效内容。

关于python - 如何获取HTML Script标签的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327937/

相关文章:

Pythonic 字符串测试

python setup_tools install_required

Python 连接和排序 3 个数据帧

python - 归一化二维直方图

python-3.x - 将抓取的数据导出到 CSV

python - Scrapy:无法在 HTML 文档中使用 Xpath、response.css 选择内容

python - 无法使用 SMTP 处理程序记录 Flask 异常

python - 通过 Python 连接远程 MySQL

python-2.7 - 尝试旋转 Pandas 数据框时出现 ReshapeError

python - 选择器response.xpath和response.css之间的输出差异是什么?