【问题标题】:beautiful soup printing nothing美丽的汤打印什么
【发布时间】:2021-05-06 04:10:40
【问题描述】:

我正在尝试从网站获取漂亮的拉汤信息,并将其打印在控制台中。当它这样做时,它会打印[],我不知道如何修复它。

soup = BeautifulSoup(page_source, "html.parser")
mlsspan = soup.find_all("td.d1m8")
print(mlsspan)

html 被拉取

<td class="d1m8">
    <span class="d1m1">
        <a href="javascript:__doPostBack('m_DisplayCore','Redisplay|188,,0')">A11033427</a>
    </span>
</td>

我不能提供该网站,因为它的密码受保护。

我正在尝试从&lt;a&gt; 标记中获取A11033427

我也试过

mlsspan = soup.find_all("td.d1m1")

【问题讨论】:

  • 试试这个,soup.find_all('td', attrs={"class":"d1m8"}),这就是你如何在 BeautifulSoup 中提取某个类的项目。
  • 另外。页面可能是动态加载的。

标签: python selenium beautifulsoup


【解决方案1】:

使用.select_one/.select 代替.find_all.find_all 不接受 CSS 选择器:

from bs4 import BeautifulSoup

html_doc = """
<td class="d1m8">
    <span class="d1m1">
        <a href="javascript:__doPostBack('m_DisplayCore','Redisplay|188,,0')">A11033427</a>
    </span>
</td>
"""

soup = BeautifulSoup(html_doc, "html.parser")
print(soup.select_one("td.d1m8 a").text)

打印:

A11033427

【讨论】:

  • 赞成。你总是比我早几秒钟回答:-)
  • 我自己对此进行了测试,是的,它可以与html_doc 一样使用html,但是,当我将它放入我的脚本中时,它会抓取网站源。我收到Traceback (most recent call last): File "C:\xampp\htdocs\admin\classes\scrape.py", line 66, in &lt;module&gt; print(soup.select_one("td.d1m8 a").text) AttributeError: 'NoneType' object has no attribute 'text' 错误
  • @reggiejones 执行print(soup) 并验证标签是否真的存在。如果没有,标签是通过Javascript注入的,必须使用其他方法(selenium,ajax等)
  • @andrejkesely 你怎么写在selenium 我试过mlsnum = driver.find_element_by_xpath("//table/tbody/tr/td[@class='d1m8'") 但我不认为我写对了吗?
  • @reggiejones 您可以使用相同的 CSS 选择器:driver.find_element_by_css_selector("td.d1m8 a")
猜你喜欢
  • 1970-01-01
  • 2020-12-09
  • 2020-12-11
  • 2013-05-30
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多