【问题标题】:wanna get text from label using beautifulsoup, tried all things but not working想使用beautifulsoup从标签中获取文本,尝试了所有方法但没有工作
【发布时间】:2019-03-05 19:40:33
【问题描述】:

我想从标签中获取这个“被拒绝”的文本,我尝试了很多东西,但对我没有任何作用。

import bs4
import requests
url="example"

agent = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}
data = requests.get(url, headers=agent)
soup = bs4.BeautifulSoup(data.text, 'html.parser')

# rejects = soup.select("label._1TSOc")
#rejects = soup.find("label._1TSOc")
#rejects = soup.find("label._1TSOc._3Gol_")
rejects  = soup.find("label",{"class":"_1TSOc"})
print(rejects) #checking either getting data or not, but OUTPUT: None    

for i in rejects:
    print(i.text) #not working

【问题讨论】:

  • 能给个网址吗?
  • 实际上您必须在该网站上注册,因为这是管理页面代码
  • 在图片中,看起来类名前后有一个空格。这会不会导致问题。
  • 您能否确认data.text 包含预期的html?以防万一这是动态生成的 JS 什么的……
  • 如果data.text 为空,那么您的整个请求都不起作用。

标签: python beautifulsoup


【解决方案1】:

你尝试过其中任何一个吗?

rejects  = soup.find("label",{"class":" _1TSOc _3Gol_ "})
print(rejects.text)

rejects  = soup.find("label",{"data-aut-id":"statusLabel"})
print(rejects.text)

【讨论】:

  • 第一个我已经试过了,但不确定第二个,我会告诉你
【解决方案2】:

“rejected”不是您的 data.text,即使它在您检查代码时出现。
这意味着它是稍后由一些 (java) 脚本添加的,并且 Beautifulsoup 永远无法访问它,因为它确实执行脚本。
在加载和执行所有脚本之后,您必须使用无头浏览器来访问完全加载和运行的页面状态。这个网站上有很多关于这个的答案!
参见例如Headless Browser for Python (Javascript support REQUIRED!)
您还可以查看 activesoup https://pypi.org/project/activesoup/ 或如何从 python 驱动 chrome。

【讨论】:

  • 无头浏览器?你能解释一下吗
  • 使用 beautifulsoup 获得的纯 html 页面是在运行任何填充其内容的脚本之前的页面状态(= 模板页面)。要在脚本运行后获得结果,您必须下载并运行它们,而 bs 不会这样做。无头浏览器是一个完整的浏览器,运行脚本和所有内容,只是没有 GUI(Windows),由 Python 等程序驱动。然后,您可以浏览完全加载的页面,而不是“模板”页面。谷歌/stackoverflow 是你的朋友!
猜你喜欢
  • 2015-08-29
  • 2017-08-13
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多