【发布时间】:2019-05-24 19:19:08
【问题描述】:
我已经使用 requests 模块以及 BeautifulSoup 库和 re 模块在 python 中编写了一个脚本,以获取一个可用格式良好的 json 内容的脚本。问题是我喜欢使用 re 来从整个凌乱的脚本中脱颖而出。
该脚本在包含var masterCompanyData = 的源代码中。
这是带有 json 内容的脚本的样子(可以看到执行以下脚本):
import re
import requests
from bs4 import BeautifulSoup
url = 'https://conference.iste.org/2019/exhibitors/floorplan.php'
r = requests.get(url)
soup = BeautifulSoup(r.text,"lxml")
script = soup.select_one("script:contains('masterCompanyData')").text
# p = re.compile(r'masterCompanyData = (.*);')
# jsonContent = p.findall(script)
# print(jsonContent)
print(script)
帮助我了解这一点的字符串操作:
items = soup.select_one("script:contains('masterCompanyData = ')").text.split("masterCompanyData = ")[1].split("Holder for the current zoom value")[0].split("/**")[0].replace(";","").strip()
由于我已经使用字符串操作成功地挖出了那部分,我不希望那样做;相反,我喜欢使用正则表达式提取该 json 内容,但我得到的是空列表。
如何使用正则表达式获取该 json 内容?
【问题讨论】:
-
这不是一个js对象。有多个。你只想要第一个吗?
-
我想要this,我已经在使用字符串操作。但是,我希望使用正则表达式 @QHarr 来实现。
标签: python python-3.x web-scraping beautifulsoup