Python - 使用Beatifulsoup从url中检索特定的“对象”

时间:2017-01-25 13:41:00

标签: python html beautifulsoup

我试图在网站上解析一个特定的“项目”,但我不知道它是一个类,对象,id还是别的什么

我的代码:

soup = BeautifulSoup(urllib2.urlopen(myURL))
divdata = soup.find('div')
print(divdata)

它返回:

<div data-store='{"Auth":{"cookie":null,"user":null,"timestamp":1485297666762},"Blocked":{},"Broadcast":
{"forceUpdate":false,"failed":[],"pending":[],"error":
{"isNotFound":false,"isServerError":false,"isUnavailable":false}},"BroadcastCache":{"broadcasts":{"ID1":{"broadcast":
{"data":{"class_name":"Broadcast","id":"ID1","state":"running,
....(more)....

所以我想要检索“正在运行”或者处于“状态”的状态 我试过了

statedata = soup.find('div', {"class":"state"})

但它什么都没有返回,检索它的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

import json
div_tag = soup.find('div', {'data-store':True})
data_string = div_tag['data-store']  # get data string
json.loads(data_string)['BroadcastCache']['broadcasts']['ID1']['broadcast']['data']['state'] # convert data string to python dict and get state

出:

'running'

答案 1 :(得分:-1)

正确的语法是soup.find_all('div', class_='state')

请注意class_之后的下划线。

在没有修改的情况下,它不太适合你的情况,因为看起来div的实际类是'data-store',其余只是一个字符串而不是标签的实际内容。你可以在那个上使用string.find('\"state\"')