为了账号安全,请及时绑定邮箱和手机立即绑定

bs4美丽的汤由于某种原因找不到div的div

bs4美丽的汤由于某种原因找不到div的div

ibeautiful 2022-08-25 13:57:54
这:HTML<div id="divTradeHaltResults"> <div class="genTable"   <table>    <tbody>    <tr>      <td> 03/10/2020  </td>      <td> 15:11:45     </td>代码url = r'https://www.nasdaqtrader.com/trader.aspx?id=TradeHalts'r=requests.get(url)soup = BeautifulSoup(r.content, "html.parser")table = soup.find('div',{'id':'divTradeHaltResults'})divclass=table.find('div',{'class':"genTable"})divt=divclass.find('table')结果:divclass={None Type}None我已经尝试了“lxml”解析器,但无济于事。我可以使用硒获得它,但它使用了太多的资源。从检查围绕多个div的所有其他问题来看,bs4似乎存在固有的问题。有没有人解决它?我尝试了其他人的多种想法。
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您得到的原因在于,该页面是动态加载的,一旦页面本身加载,就会通过该页面呈现。NoneJavaScript


因此,我已经能够跟踪发送请求以获取它的来源。这可以通过浏览器在 下进行跟踪。tableJSXHRDeveloper-ToolsNetwork-Tab


否则,您可以使用它。我已经为您提供了这两种解决方案。selenium


import requests

import pandas as pd



json = {

    "id": 2,

    "method": "BL_TradeHalt.GetTradeHalts",

    "params": "[]",

    "version": "1.1"

}


headers = {

    'Referer': 'https://www.nasdaqtrader.com/trader.aspx?id=TradeHalts'

}


r = requests.post(

    "https://www.nasdaqtrader.com/RPCHandler.axd", json=json, headers=headers).json()


df = pd.read_html(r["result"])[0]


df.to_csv("table1.csv", index=False)

输出:在线查看


from selenium import webdriver

from selenium.webdriver.firefox.options import Options

from bs4 import BeautifulSoup

import pandas as pd



options = Options()

options.add_argument('--headless')

driver = webdriver.Firefox(options=options)


driver.get(

    "https://www.nasdaqtrader.com/trader.aspx?id=TradeHalts")


df = pd.read_html(driver.page_source)[2]


# print(df)

df.to_csv("table.csv", index=False)

driver.quit()

输出:在线查看




查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信