python - 为什么 BeautifulSoup 不从网页中提取所有 HTML?

标签 python html python-3.x web-scraping beautifulsoup

我正在尝试从此网站提取文本:searchgurbani 。这个网站有一些古老的经文逐行翻译成英语和旁遮普语(印度语言)。它是一个非常好的平行语料库。我已成功将所有英文翻译提取到一个单独的文本文件中。但是当我选择旁遮普语时,它什么也没有返回。

这是 Inspect 元素屏幕截图:(突出显示的文本是翻译后的旁遮普语)

Screenshot 1

在屏幕截图 1 中,属于 class=lang_16 的突出显示文本未列在应包含所有 HTML 的 soup 对象 beautiful 中。这是Python代码:

outputFilePunjabi = open("1.txt","w",newline="",encoding="utf-16")
r=urlopen("")
beautiful = BeautifulSoup(r.read().decode('utf-8'),"html5lib")
#beautiful = BeautifulSoup(r.read().decode('utf-8'),"lxml")
punjabi_text = beautiful.find_all(class_="lang_16")
for i in punjabi_text:
  outputFilePunjabi.write(i.get_text())
  outputFilePunjabi.write('\n')

如果我使用class_=lang_4运行相同的代码,它就会完成工作。

请执行以下操作以在检查元素中查看 lang_16:

请在该网页上执行以下操作:转到首选项 --> 在 Guru Granth Shahib 上提供的其他翻译下勾选“Sri Guru Granth Sahib ji 的翻译(由 S. Manmohan Singh)- 旁遮普语”:- -> 向下滚动 - 提交更改 -> 重新打开页面

请指导我哪里出错了。

(Python 版本 = 3.5)

PS:我在网络抓取方面的经验非常少。

最佳答案

请记住您已建议执行以下操作:

Please do the following on that web page: Go to preferences -> Tick "ranslation of Sri Guru Granth Sahib ji (by S. Manmohan Singh) - Punjabi" under Additional Translations available on Guru Granth Shahib: -> scroll down - submit changes

现在,当您使用 Python 下载页面时,这也是必需的。换句话说,使用 requests设置lang_16="yes" cookie以启用旁遮普语翻译:

import requests
from bs4 import BeautifulSoup


with requests.Session() as session:
    response = session.get("https://www.searchgurbani.com/guru_granth_sahib/ang_by_ang", cookies={
        "lang_16": "yes"
    })
    soup = BeautifulSoup(response.content, "html5lib")
    for item in soup.select(".lang_16"):
        print(item.get_text())

打印:

ਵਾਹਿਗੁਰੂ ਕੇਵਲ ਇਕ ਹੈ। ਸੱਚਾ ਹੈ ਉਸ ਦਾ ਨਾਮ, ਰਚਨਹਾਰ ਉਸ ਦੀ ਵਿਅਕਤੀ ਅਤੇ ਅਮਰ ਉਸ ਦਾ ਸਰੂਪ। ਉਹ ਨਿਡਰ, ਕੀਨਾ-ਰਹਿਤ, ਅਜਨਮਾ ਤੇ ਸਵੈ-ਪ੍ਰਕਾਸ਼ਵਾਨ ਹੈ। ਗੁਰਾਂ ਦੀ ਦਯਾ ਦੁਆਰਾ ਉਹ ਪਰਾਪਤ ਹੁੰਦਾ ਹੈ।
ਉਸ ਦਾ ਸਿਮਰਨ ਕਰ।
ਪਰਾਰੰਭ ਵਿੱਚ ਸੱਚਾ, ਯੁਗਾਂ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਸੱਚਾ,
ਅਤੇ ਸੱਚਾ ਉਹ ਹੁਣ ਭੀ ਹੈ, ਹੇ ਨਾਨਕ! ਨਿਸਚਿਤ ਹੀ, ਉਹ ਸੱਚਾ ਹੋਵੇਗਾ।
...
ਕਈ ਇਕ ਗਾਇਨ ਕਰਦੇ ਹਨ ਕਿ ਵਾਹਿਗੁਰੂ ਪ੍ਰਾਣ ਲੈ ਲੈਂਦਾ ਹੈ ਤੇ ਮੁੜ ਵਾਪਸ ਦੇ ਦਿੰਦਾ ਹੈ।
ਕਈ ਗਾਇਨ ਕਰਦੇ ਹਨ ਕਿ ਹਰੀ ਦੁਰੇਡੇ ਮਲੂਮ ਹੁੰਦਾ ਅਤੇ ਸੁੱਝਦਾ ਹੈ।

关于python - 为什么 BeautifulSoup 不从网页中提取所有 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39962420/

相关文章:

python - Django:get() 返回了多个项目——它返回了 3 个

html - 不熟悉的 Javascript 语法/hack

html - 如何使用css将hr隐藏在最后一里

django - 我如何将字段链接到 Django 模型中的多值字段

python - 为什么我的 equal 方法总是返回 false?

python - 数据帧形成

python - 在Python中装饰方法签名中没有self的类

python - 如何将标准 timedelta 字符串转换为 timedelta 对象

python - CSV 数据(时间戳和事件)的时间序列图 : x-label constant

html - CSS:在 "hover"标签内制作 "a"标签的 "span",消失了