#python #beautifulsoup
#python #beautifulsoup
Вопрос:
У меня есть этот файл под названием ‘recognized.txt ‘ в котором есть такой текст
Ссылка на recognized.txt :https://drive.google.com/file/d/1yCQz6cQPDmcCOuXBOCAX4nvNoUqewE0y/view?usp=sharing
Мой код:-
f = open('recognized.txt','r')
message = f.read()
message.replace(" ", "")
print(message)
f.close()
import bs4 as bs
import urllib.request
url = ('https://html.duckduckgo.com/html?q=' message) # no javascript
sauce = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(sauce, 'lxml')
a = soup.body.b
print(a)
for i in soup.find_all('a', class_='result__snippet'):
print(i.get_text(separator=' - ', strip=True))
Поэтому, когда я запускаю приведенный выше код, он выдает ошибку как:-
Traceback (most recent call last):
File "D:ocrwebparse.py", line 26, in <module>
sauce = urllib.request.urlopen(url).read()
File "C:UsersPraveenAppDataLocalProgramsPythonPython36liburllibrequest.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "C:UsersPraveenAppDataLocalProgramsPythonPython36liburllibrequest.py", line 526, in open
response = self._open(req, data)
File "C:UsersPraveenAppDataLocalProgramsPythonPython36liburllibrequest.py", line 544, in _open
'_open', req)
File "C:UsersPraveenAppDataLocalProgramsPythonPython36liburllibrequest.py", line 504, in _call_chain
result = func(*args)
File "C:UsersPraveenAppDataLocalProgramsPythonPython36liburllibrequest.py", line 1361, in https_open
context=self._context, check_hostname=self._check_hostname)
File "C:UsersPraveenAppDataLocalProgramsPythonPython36liburllibrequest.py", line 1321, in do_open
r = h.getresponse()
File "C:UsersPraveenAppDataLocalProgramsPythonPython36libhttpclient.py", line 1331, in getresponse
response.begin()
File "C:UsersPraveenAppDataLocalProgramsPythonPython36libhttpclient.py", line 297, in begin
version, status, reason = self._read_status()
File "C:UsersPraveenAppDataLocalProgramsPythonPython36libhttpclient.py", line 279, in _read_status
raise BadStatusLine(line)
http.client.BadStatusLine: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
Что означает ошибка?
-
Почему я получаю эту ошибку?
Ответ №1:
После запуска вашего кода с вашим текстовым файлом мне удалось воспроизвести проблему. Это то, что я сделал:
- Удалил все новые строки из вашего сообщения и пробелы с помощью strip()
- удален ‘lxml’ из BeautifulSoup()
Кажется, это дает достойный результат.
import bs4 as bs
import urllib.request
with open('Downloads/recognized.txt') as f:
message = f.read().strip()
url = ('https://html.duckduckgo.com/html?q=' message)
sauce = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(sauce)
a = soup.body.b
print(a)
for i in soup.find_all('a', class_='result__snippet'):
print(i.get_text(separator=' - ', strip=True))
Распечатка выглядит следующим образом:
<b>Dinosaur</b>
Dinosaurs - are a diverse group of reptiles of the clade Dinosauria. They first appeared during the Triassic period, between 243 and 233.23 million years ago...
🎦 - Dinosaur - . Quite the same Wikipedia. Just better. - Dinosaur - . From Wikipedia, the free encyclopedia.
Мультфильм, триллер, приключения. Режиссер: Эрик Лейтон, Ральф Зондаг. В ролях: Элфри Вудард, Осси Дэвис, Макс Казелла и др. Путешествие трехтонного игуанодонта по имени Аладар...
Перевод слова - dinosaur - , американское и британское произношение, транскрипция, словосочетания, примеры использования.
Похоже, проблема связана с вашей переменной message. Я очистил его, так что это простая строка без новых строк. Теперь все работает нормально.
Комментарии:
1. Да, я добавил ссылку в свой вопрос, вы можете проверить это
2. Я скорректировал код в соответствии с вашим новым форматом сообщения. По сути, ваша строка сообщения не была очищена должным образом.