【问题标题】:bs4 beautiful soup does not find div's with div's for some reasonbs4 美丽的汤由于某种原因找不到带有 div 的 div
【发布时间】:2020-06-22 18:33:36
【问题描述】:

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”解析器,但无济于事。
我可以使用 Selenium 获得它,但它使用了太多资源。
从检查围绕多个 div 的所有其他问题
bs4 似乎存在固有问题。
有人解决了吗?我尝试了其他人的多种想法
人。

【问题讨论】:

  • 关闭标签... &lt;div class="genTable" 像这样:&lt;div class="genTable"&gt;
  • table的值是多少?

标签: python html beautifulsoup html-parsing lxml


【解决方案1】:

你得到None的原因是页面是通过JavaScript动态加载的,一旦页面本身加载就会呈现。

因此,我能够追踪table 的来源,JS 发送XHR 请求以获取它。这可以通过您的浏览器Developer-ToolsNetwork-Tab 下的Network-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)

输出:view-online

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()

输出:view-online

【讨论】:

  • αԋɱҽԃ 感谢工作正常,查看网络选项卡和 RPCHandler.axd 调用如何确定 requests.post 调用的 json 内容?
  • @MNewton 检查用于请求本身的参数。
猜你喜欢
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2016-12-18
  • 2017-12-05
  • 1970-01-01
  • 2015-03-20
相关资源
最近更新 更多