Извлечение данных с сильно неструктурированной веб-страницы

web-scraping beautifulsoup

37 просмотра

1 ответ

Я обычно использую Красивый суп с питоном для извлечения данных со страниц. У меня странная ситуация, когда они очень беспрепятственно вводят данные.

Это страница http://dsalsrv02.uchicago.edu/cgi-bin/app/kadirvelu_query.py?page=2.

При проверке источника я обнаружил, что он хранится таким образом

1) <a href="/cgi-bin/app/kadirvelu_query.py?qs=அகங்காரவிர்த்தி&searchhws=yes"><hw>அகங்காரவிர்த்தி</hw></a> akangkāravirtti (<a href="/cgi-bin/app/kadirvelu_query.py?page=2">p. 2</a>) நானென்னும்வடிவுஞானம்.
<br>
2) <a href="/cgi-bin/app/kadirvelu_query.py?qs=அகங்காரான்ம ஞானம்&searchhws=yes"><hw>அகங்காரான்ம ஞானம்</hw></a> akangkārāṉm ஞானம் (<a href="/cgi-bin/app/kadirvelu_query.py?page=2">p. 2</a>) அகங்காரமேஆன்மாவெனக்கொள்ளும் அறிவு.
<br>

Следовательно, любой запрос не может получить мои требуемые результаты

K, akangkāravirtti, நானென்னும்வடிவுஞானம்

это не что иное, как слово, его английская транслитерация, значение.

В настоящее время я использую следующий код, чтобы получить вывод неработающего типа

for a in soup.findAll('a'):
        print >> f , a.text.encode('utf8')
Автор: sibi kanagaraj Источник Размещён: 08.11.2019 11:05

Ответы (1)


1 плюс

Решение

HTML-код ужасен, его запуск через валидатор w3c выдает 161 ошибку, 82 предупреждения (-ей) , чтобы получить нужный текст, нужно немного потрудиться, но это должно получить то, что вы хотите:

from bs4 import BeautifulSoup
import requests

soup = BeautifulSoup(requests.get(url).content)
strings = [[a.text.strip(), a.find_next_sibling(text=True).strip("() \n"), a.find_next("br").find_previous(text=True).strip("\n )")] for a in soup.select("a[href^=/cgi-bin/app/kadirvelu_query.py?qs=]")]

Что дает вам:

In [17]: for a,b, c in strings:
              print(u"a = {}".format(a))
              print(u"b = {}".format(b))
              print(u"c = {}".format(c))
   ....:     
a = அகங்காரவிர்த்தி
b = akangkāravirtti
c = நானென்னும்வடிவுஞானம்.
a = அகங்காரான்ம ஞானம்
b = akangkārāṉm ஞானம்
c = அகங்காரமேஆன்மாவெனக்கொள்ளும் அறிவு.
a = அகங்காரி
b = akangkāri
c = செருக்குடையவன், கர்வி.
a = அகங்காழ்
b = akangkāẕ
c = அகக்காழ்.
a = அகங்கை
b = akangkai
c = உள்ளங்கை.
a = அகசன்
b = akacaṉ
c = கேது.
a = அகசியக்காரன்
b = akaciyakkāraṉ
c = விதூஷகன்.
a = அகசியக்கூத்து
b = akaciyakkūttu
c = பகடிக்கூத்து.
a = அகசியம்
b = akaciyam
c = ஆசியம், வேடிக்கை.
a = அகச்சத்தாதுவித்தசமாதி
b = akaccattātuvittacamāti
c = ஆறு சமாதிகளில் ஒன்று.
a = அகச்சுவை
b = akaccuvai
c = நாடகரசத்தொன்று, ஞானம்.
a = அகடச்சக்கரம்
b = akaṭaccakkaram
c = உதரபந்தனம் என்னுமணி.
a = அகடிதகடநா
b = akaṭitakaṭanā
c = மாயாகாரியஞ்செய்தல்.
a = அகடியம்
b = akaṭiyam
c = அநீதி.
a = அகடூரி
b = akaṭūri
c = பாம்பு.
a = அகட்டுத்தே
b = akaṭṭuttē
c = விநாயகன்.
a = அகணித பஞ்சாங்கம்
b = akaṇit பஞ்சாங்கம்
c = அலகிடாதுசொல்லும் பஞ்சாங்கம்.
a = அகணிதபஞ்சாங்கி
b = akaṇitapañcāngki
c = கணியாதபஞ்சாங்கஞ்சொல்வோன்.
a = அகண்
b = akaṇ
c = அருகு.
a = அகண்டஞானம்
b = akaṇṭañāṉam
c = பரிபூரணஞானம்.
a = அகண்டவடிவம்
b = akaṇṭavaṭivam
c = நீக்கமற்றசொரூபம்.
a = அகண்டவாக்கியம்
b = akaṇṭavākkiyam
c = விட்டும் விடாதவிலக்கணை.
a = அகண்டாகண்டன்
b = akaṇṭākaṇṭaṉ
c = பரப்பிரமம்,கடவுள்
a = அகண்டாகாரஞானம்
b = akaṇṭākārañāṉam
c = பரிபூரணஞாநம்
a = அகண்டாகாரம்
b = akaṇṭākāram
c = விசாலம்,அளவுபடாதவடிவம்.
a = அகண்டாகாரவிர்த்திஞானம்
b = akaṇṭākāravirttiñāṉam
c = பேரறிவு.
a = அகண்டி
b = akaṇṭi
c = ஒருவாச்சியம்.
a = அகண்டிதமூர்த்தி
b = akaṇṭitamūrtti
c = கண்டிக்கப்படாதவடிவுடையோன்.
a = அகண்டித பூர்த்தி
b = akaṇṭit பூர்த்தி
c = கப்படிக்கப்படாதவடிவுடையோன்.
a = அகண்டிதன்
b = akaṇṭitaṉ
c = எங்கும் நிறைந்தவன்.
a = அகண்டிதாகாரம்
b = akaṇṭitākāram
c = கண்டிக்கப்படாதவுருவம்.
a = அகதிகம்
b = akatikam
c = உரைக்கப்படாதது.
a = அகதேசி
b = akatēci
c = உள்ளூரவன்.
a = அகத்தடியாள்
b = akattaṭiyāḷ
c = மனையாள்.
a = அகத்தியா
b = akattiyā
c = ஆழம், எட்டாமை, கடல்.
a = அகத்தியான்
b = akattiyāṉ
c = அகத்தியமுனிவன்.
a = அகத்தை
b = akattai
c = தாய்.
a = அகநகர்
b = akanakar
c = நகருள்.
a = அகநகை
b = akanakai
c = இகழ்ச்சிநகை.
a = அகநகைத்தல்
b = akanakaittal
c = இகழ்ச்சி நகைசெய்தல்.
Автор: Padraic Cunningham Размещён: 20.08.2016 01:47
Вопросы из категории :
32x32