【问题标题】:Get embedded JSON data in div using selenium使用 selenium 在 div 中获取嵌入的 JSON 数据
【发布时间】:2021-06-10 01:10:36
【问题描述】:

我是使用 Selenium 抓取的新手,对于如何提取可方便地直接在 div 中使用的 JSON 感到困惑。 div 甚至包含一个名为data-json的标签

我目前的基本代码是:

#this works perfectly

from selenium import webdriver
DRIVER_PATH = '/my/path/to/driver'

driver = webdriver.Chrome(executable_path=DRIVER_PATH) 
driver.get('https://www.genecards.org/cgi-bin/carddisp.pl?gene=IL1R1')


#this errors out
element = driver.find_element_by_data_type('Biological')

#this also errors out
driver.execute_script('return JSON.stringify(window.dataJSON)

我正在寻找的 JSON 是一个 div 中的一个 div,其中最外层的 div 有一个标签 data-type='Biological',而最里面的 div 包含 JSON 数据本身:

请注意,此网页包含一些其他嵌入的 JSON,因此指定父 div 中的 data-type 很重要。任何有关如何将此 JSON 提取为字符串变量的指导都将不胜感激!

【问题讨论】:

    标签: python json selenium web-scraping


    【解决方案1】:

    我觉得你可以试试这个

    from selenium import webdriver
    DRIVER_PATH = '/my/path/to/driver'
    
    driver = webdriver.Chrome(executable_path=DRIVER_PATH) 
    driver.get('https://www.genecards.org/cgi-bin/carddisp.pl?gene=IL1R1')
    
    element = driver.find_element_by_css_selector('#enhancerControllerComponent > div').get_attribute("data-json")
    # goTermController
    # element = driver.find_element_by_css_selector('#go_func > div.gc-subsection-inner-wrap > div > div').get_attribute("data-json")
    
    j = json.loads(str(element))
    
    print(j)
    print(type(j))
    
    

    如果您想获取新元素,只需执行以下步骤
    1.在“开发者工具”中查找元素 2.右键单击“元素”
    3.“复制”->“复制选择器”
    4.changefind_element_by_css_selectorpart 喜欢我做的事情

    【讨论】:

    • 这运行并返回一个 JSON,但它是不正确的 - 当我将 #enhancerControllerComponent 更改为 #goTermController - 它不起作用:(
    • 我想你可能解析错误,我更新我的答案你可以试试
    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多