繁体   English   中英

如何搜索匹配的字符串,然后在字符串和冒号之后提取字符串

[英]How to search for matched string then extract the string after it and a colon

我是Python和网络抓取的新手,所以如果这个问题太基本了,我深表歉意!

我想从下面的示例BeautifulSoup对象中提取“得分”和“评分”(评分)

import bs4
import re
text = '<html><body>{"count":1,"results":[{"score":"2-1","MatchId":{"number":"889349"},"name":"Match","rating":{"rate":9.0}}],"performance":{"comment":{}}}</body></html>'
page = bs4.BeautifulSoup(text, "lxml")
print type(page)

我已经尝试了这些,但没有出现(只是空白[])

tmp = page.find_all(text=re.compile("score:(.*)"));
print(tmp)

tmp = page.findAll("score");
print(tmp)

我发现了类似的问题,但给了我错误

tmp = page.findAll(text = lambda(x): x.lower.index('score') != -1)
print(tmp)

AttributeError: 'builtin_function_or_method' object has no attribute 'index'

我做错了什么? 提前致谢!

这是方式的三分之二turducken协议。 您可以使用beautifulsoup查找正文并使用json对其进行解码。 然后,您将获得一些python字典和列表。

>>> import json
>>> import bs4
>>> import re
>>> text = '<html><body>{"count":1,"results":[{"score":"2-1","MatchId":{"number":"889349"},"name":"Match","rating":{"rate":9.0}}],"performance":{"comment":{}}}</body></html>'
>>> page = bs4.BeautifulSoup(text, "lxml")
>>> 
>>> data = json.loads(page.find('body').text)
>>> for result in data["results"]:
...     print(result["score"], result["rating"]["rate"])
... 
2-1 9.0
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM