使用以下命令从BeautifulSoup中提取数据<script> and var

最后发布:


问题
None python-2.7 web-scraping beautifulsoup
回答

该长字符串是JSON ,它大致映射到python字典。 您具有键值对,例如分别为"id""p_14062397399"

因此,我在这里美化了JSON,您可以轻松地看到键值对和嵌套结构。 要提取名称和地址,请执行以下操作:

from bs4 import BeautifulSoup as bs
from urllib import urlopen
import json

Soup = bs(urlopen('https://familysearch.org/pal:/MM9.1.1/KHR6-D6D').read())

rawJ = Soup.find_all('script')
J = str(rawJ[10])
J1 = J.split('var person = ')
J2 = J1[1].rsplit('var record =')
J3 = J2[0].rsplit(';', 1)

JsonText = J3[0].decode('utf-8')


s = json.loads(JsonText)
print s["personBestName"]
for i in s["facts"]:
    if i["type"] == "http://gedcomx.org/Census":
        print i["place"]["fields"][0]["values"][0]["text"]