удалить лишние символы из внешних файлов - PullRequest
2 голосов
/ 09 февраля 2020

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

from bs4 import BeautifulSoup
import requests, re

url = "http://shabdasampada.blogspot.com/2020/01/blog-post_29.html"

headers = requests.utils.default_headers()
req = requests.get(url, headers)
soup = BeautifulSoup(req.content, 'html.parser')
text = soup.get_text()

p = re.compile(r'[^\u0900-\u097F\n]')
for line in text.splitlines():
    cleaned = p.sub(' ', line)
    if cleaned.strip():
        print(cleaned)

Но я вижу некоторые ненужные символы в последних нескольких строках. вот так ...

"ल क म ळव ल क म ळव"

Как удалить эти строки?


Обновить :

Мой код возвращает это:

नाबर की नंबर स्वभाषेत टंकलेखन साहाय्य २ ९ जानेवारी २०२० नंबर नंबर नंबर लर्निंगचा वापर करून सर्च सर्च त्याला फार महिने झाले असतील काही बाबतीत रिझल्टमध्ये सुधारणा झाली असली इतर बऱ्याच बऱ्याच आणि विशेषतः विशेषतः सर्चची क्वालिटी घसरलेली दिसते आज मी मंगेश नाबर या व्यक्तीची गुगलून पाहिली तर नंबर नंबर नंबर नंबर शब्द शब्द असलेली पानावर पानावर पानावर दिसत बहुतेक गुगलने नाबर शब्दाला असावे असावे असावे द्वारा हेया 101 जुने पोस्ट मुख्यपृष्ठ याची सदस्यता घ्या टिप्पणी 101 101
ब्लॉग संग्रहण मनोगताचा स्पेल चेकर बसलय 101 बसलंय नाबर की नंबर खरा धोका धोका प्रोफाइल प्रोफाइल प्रोफाइल प्रोफाइल 101 101 101 101 क 101 101 101
वर श अर कर ब ब
ल गकर ब 10
गकर गकर
वर श अर कर
वर श अर कर न ल ईम 10
अध क व च
न बर क न बर
10 बर क न बर
1028
1029
1030
क 10 न बर ग 10 10
10 न लर न गच पर कर न च र र 10 10 10 10 10 10 10
1033

                                                                                                                                                                                      ल       ड ह       त आह

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

क म ळव ल क म ळव
वर श अर कर ह ब
ल गकर ह ब
ल गकर
वर श 10 कर
वर श अर कर ईम ल 10
अध क व च
न बर क न 10
न बर क न 10
स प दन ल क क
ल पब पब 10 * क प क ल
53 क आह ल प स कर कर
10 बर क न गलन गलन गलन 10 10


                                                                                                                                                                                      ल       ड ह       त आह

Обновление 2:

Я забыл удалить javascript!

for script in soup(["script", "style"]):
    script.decompose()
text = soup.get_text()

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Данные, которые вы получаете, поступают только из блога, поэтому, поскольку вы не указываете, что именно вы хотите, вы получаете все.

Предполагая, что вы хотите только

enter image description here

Затем вы должны указать красивому супу именно эту часть и ничего более.

Ваш код читает все со страницы:

вывод:

                           नाबर की नंबर 
स्वभाषेत टंकलेखन साहाय्य
२९ जानेवारी  २०२०
नाबर की नंबर 
गुगलने मशीन लर्निंगचा वापर करून सर्च रिझल्ट दाखवायला सुरुवात केली  त्याला आता फार नाही पण एक दोनच महिने झाले असतील 
काही बाबतीत रिझल्टमध्ये सुधारणा झाली असली तरी इतर बऱ्याच बाबतीत आणि विशेषतः देवनागरी सर्चची क्वालिटी घसरलेली दिसते   आज मी  मंगेश नाबर  या व्यक्तीची माहिती गुगलून पाहिली तर  मंगेश  आणि  नंबर   हे दोन शब्द असलेली पाने पहिल्या पानावर दिसत आहेत  बहुतेक गुगलने  नाबर  या शब्दाला बदलून  नंबर  केले असावे 
द्वारा पोस्ट केलेले
येथे
१० ०४ म पू 
लेबल 
हे राम 
कोणत्याही टिप्पण् या नाहीत 
टिप्पणी पोस्ट करा
नवीनतम पोस्ट
थोडे जुने पोस्ट
मुख्यपृष्ठ
याची सदस्यता घ्या 
टिप्पणी पोस्ट करा       
ब्लॉग संग्रहण
मनोगताचा स्पेल चेकर
बसलय की बसलंय 
नाबर की नंबर 
स्पर्धापरीक्षेचा खरा धोका
माझ्याबद्दल
माझे पूर्ण प्रोफाइल पहा 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ल              क म       ळव                                          ल              क म       ळव                                                                                           वर श       अर कर                                           ह       ब       ल       गकर                                               ह       ब       ल       गकर                                                                                             वर श       अर कर                                                                                                     वर श       अर कर                                            ईम       ल                                    ईम       ल                                                                                                                                                                                                                                                                                     अध       क व       च                                                                            न       बर क        न       बर                                              न       बर क        न       बर                                                                                                                                           स       प       दन                             ल              क क       ल       पब       र       डवर क       प        क       ल                  ठ       क आह                       ल              क प       स       ट कर                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     न       बर क        न       बर                     ग       गलन        मश       न लर       न              गच        व       पर कर       न सर       च र       झल       ट द       खव       यल        स       र       व       त क       ल         त       य       ल        आत        फ       र न       ह        पण एक द       नच मह       न        झ       ल        असत       ल                                                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                          ल       ड ह       त आह 

Но с:

from bs4 import BeautifulSoup
import requests, re

url = "http://shabdasampada.blogspot.com/2020/01/blog-post_29.html"

headers = requests.utils.default_headers()
req = requests.get(url, headers)
soup = BeautifulSoup(req.content, 'html.parser')

h=soup.find_all('div', attrs={'class':"post hentry uncustomized-post-template"})[0]

text = h.get_text()

p = re.compile(r'[^\u0900-\u097F\n]')
for line in text.splitlines():
    cleaned = p.sub(' ', line)
    if cleaned.strip():
        print(cleaned)

вывод будет:

नाबर की नंबर 
गुगलने मशीन लर्निंगचा वापर करून सर्च रिझल्ट दाखवायला सुरुवात केली  त्याला आता फार नाही पण एक दोनच महिने झाले असतील 
काही बाबतीत रिझल्टमध्ये सुधारणा झाली असली तरी इतर बऱ्याच बाबतीत आणि विशेषतः देवनागरी सर्चची क्वालिटी घसरलेली दिसते   आज मी  मंगेश नाबर  या व्यक्तीची माहिती गुगलून पाहिली तर  मंगेश  आणि  नंबर   हे दोन शब्द असलेली पाने पहिल्या पानावर दिसत आहेत  बहुतेक गुगलने  नाबर  या शब्दाला बदलून  नंबर  केले असावे 
द्वारा पोस्ट केलेले
येथे
१० ०४ म पू 
लेबल 
हे राम 

вы можете видеть, что я указал div, в котором есть данные, которые вам нужны

h=soup.find_all('div', attrs={'class':"post hentry uncustomized-post-template"})[0]

, чтобы проверить это, вам нужно будет проверить html веб-страницы, чтобы точно знать, где находятся нужные вам данные. Для этого вы можете использовать Ctrl + Shift + i в chrome.

Я бы посоветовал вам просмотреть этот пост для получения дополнительной информации

Для вашего последнего вопрос

ненужные данные, которые вы видите, поступают только с вашего сайта.

BeautifulSoup получает данные из источника страницы, и, поскольку вы не упомянули никаких условий, сообщающих ему, какие данные вам нужны, вы получите все из них. Чтобы понять, откуда поступают ваши нежелательные данные, посмотрите на источник страницы вашего сайта.

если вы посмотрите на исходный код страницы, то найдете этот мусор в конце кода html.

enter image description here

This является источником всего этого мусора, который вы видите в выходных данных.

Если вы сделаете это изменение: вместо 'cleaned' print 'line'

p = re.compile(r'[^\u0900-\u097F\n]')
for line in text.splitlines():
    cleaned = p.sub(' ', line)
    if cleaned.strip():
        print(line)

вы таким образом, в конечном итоге вы увидите много ненужных данных ... эти ненужные данные фактически присутствуют в исходном коде вашей страницы и в этом коде, поскольку вы фильтровали только для определенного набора символов c, вы видели только эти

0 голосов
/ 11 февраля 2020

Очевидно, что символы «мусора» находятся внутри интервала фильтра, который вы определили в re.compile (0x900 -0x97F):

print ([hex(ord(s)) for s in "लकमळवलकमळव"])
>> ['0x932', '0x915', '0x92e', '0x933', '0x935', '0x932', '0x915', '0x92e', '0x933', '0x935']

Возможно, вы захотите добавить другой фильтр или настроить аргументы re.compile ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...