wes*_*lls 9 python json web-scraping json-ld
我一直在尝试一些网页抓取,我在这个标签中发现了一些有趣的数据:
<script type="application/ld+json">
Run Code Online (Sandbox Code Playgroud)
我已经能够使用漂亮的汤来隔离那个标签
html = urlopen(url)
soup = BeautifulSoup(html, "lxml")
p = soup.find('script', {'type':'application/ld+json'})
print p
Run Code Online (Sandbox Code Playgroud)
但我无法处理数据或从该标签中提取任何数据。
如果我尝试使用正则表达式从中获取一些东西,我会得到:
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)
如何从该脚本标记中获取数据并像使用字典或字符串一样使用它?顺便说一下,我正在使用 python 2.7。
您应该阅读 JSONjson.loads以将其转换为字典。
import json
import requests
from bs4 import BeautifulSoup
def get_ld_json(url: str) -> dict:
parser = "html.parser"
req = requests.get(url)
soup = BeautifulSoup(req.text, parser)
return json.loads("".join(soup.find("script", {"type":"application/ld+json"}).contents))
Run Code Online (Sandbox Code Playgroud)
该join/contents组合删除脚本标记。
你应该阅读 html 来解析
html = urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
p = soup.find('script', {'type':'application/ld+json'})
print p.contents
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6344 次 |
| 最近记录: |