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