2016-10-10 2 views
2

Я пытаюсь извлечь текст с этого сайта: searchgurbani. На этом веб-сайте написано несколько старых текстов, переведенных на английский и панджаби (индийский язык). Он делает очень хороший параллельный корпус. Я успешно извлек все английские переводы в отдельный текстовый файл. Но когда я иду в Пенджаби, Он ничего не возвращает.Почему BeautifulSoup не извлекает весь HTML-код с веб-страницы?

Это снимок экрана Проверьте элемент: (Выделенный текст является переведен Панджаби)

Screenshot 1

В Скриншот 1, выделенный текст, который принадлежит класса = lang_16 не перечисленные в объекте супа красивый, который должен содержать весь HTML. Вот код 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 в инспектировать элемент:

Пожалуйста сделайте следующее на этой веб-странице: Перейти к предпочтениям -> Tick «перевод Шри Гуру Грант Сахиб дзи (С. М.Сингхом) - Punjabi "в разделе Дополнительные переводы, доступные на Guru Granth Shahib: -> прокрутить вниз - отправить изменения -> открыть страницу

Пожалуйста, направляйте меня, где я иду не так.

(питон версия = 3,5)

PS: У меня очень небольшой опыт в веб-слом.

+0

Интересных, я на самом деле не вижу элемент с 'класса =" lang_16 "на странице. Вы уверены, что ссылка верна? .. – alecxe

+0

Просьба сделать следующее на этой веб-странице: Перейти к настройкам -> Tick "перевод Шри Гуру Грантх Сахиб джи (С. Манмоханом Сингхом) - Пенджаби" в разделе Дополнительные переводы, доступные на Гуру Granth Shahib: -> прокрутить вниз - отправить изменения -> повторно открыть страницу | Вы должны увидеть это @alecxe – ssokhey

+0

Прежде всего, «Inspect» не показывает оригинальный HTML, но какие бы результаты ни возникали после его различных модификаций. Используйте «Просмотр источника», чтобы увидеть фактический источник, который вы можете найти в своем скрипте. Затем посмотрите, есть ли какая-либо разница.Во всяком случае, я не вижу содержимое с экрана в любом из этих представлений. – zvone

ответ

2

Помните, вы предложили сделать следующее:

Пожалуйста, выполните следующие действия на этой веб-странице: Перейти к предпочтениям -> Tick «ranslation Шри Гуру Грант Сахиб дзи (С. Манмохан Singh) - пенджаби»под дополнительные переводы доступны на Гуру Грант Shahib: -> прокрутите вниз - представить изменения

Теперь, это также необходимо при загрузке страницы в Python. Другими слова, используйте requests и установить lang_16="yes" печенье для того, чтобы панджаби перевод:

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

распечатки:

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

Это работает как шарм! Я застрял здесь последние две недели. Огромное спасибо. :) :) – ssokhey

Смежные вопросы