Как исправить эти ошибки, возникающие из-за блокирования сервера веб-очисткой? - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь получить текст с веб-страницы, используя функцию " get_text ", как описано здесь .

import urllib.request
from inscriptis import get_text

url = "http://www.informationscience.ch"
html = urllib.request.urlopen(url).read().decode('utf-8')

text = get_text(html)

print(text)

Это прекрасно работает для этогоопределенного веб-сайта, но когда я пытаюсь очистить другой веб-сайт, я получаю сообщение об ошибке 403:

import urllib.request
from inscriptis import get_text

url = "https://economictimes.indiatimes.com/markets/stocks/news/birla-group-enters-the-fray-to-acquire-idbi-federal-life/articleshow/64251332.cms"
html = urllib.request.urlopen(url).read().decode('utf-8')

text = get_text(html)

print(text)

Это приводит к следующей ошибке в строке html = urllib.request.urlopen(url).read().decode('utf-8'):

HTTPError: HTTP Error 403: Forbidden

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

import urllib.request
from inscriptis import get_text

url = "https://economictimes.indiatimes.com/markets/stocks/news/birla-group-enters-the-fray-to-acquire-idbi-federal-life/articleshow/64251332.cms"
html = urllib.request.urlopen(url, headers={'User-Agent': 'Mozilla/5.0'}).read().decode('utf-8')

text = get_text(html)

print(text)

, но получаю следующую ошибку:

TypeError: urlopen() got an unexpected keyword argument 'headers'

Так как в сообщении об ошибке указано headersне определено для urlopen, я попытался указать пользовательский агент с модулем requests следующим образом:

from inscriptis import get_text
import requests
url = requests.get('https://economictimes.indiatimes.com/markets/stocks/news/birla-group-enters-the-fray-to-acquire-idbi-federal-life/articleshow/64251332.cms', "lxml", headers={'User-Agent': 'Mozilla/5.0'})

print(get_text(url))

Но это дает следующую ошибку:

AttributeError: 'Response' object has no attribute 'strip'

Как сделатьЯ получаю этот чертов сервер, чтобы прекратить блокировать мои веб-обходы, пожалуйста?

1 Ответ

0 голосов
/ 21 мая 2018

Вам нужно обработать тело ответа, а не сам объект ответа:

response = requests.get('https://economictimes.indiatimes.com/markets/stocks/news/birla-group-enters-the-fray-to-acquire-idbi-federal-life/articleshow/64251332.cms', "lxml", headers={'User-Agent': 'Mozilla/5.0'})

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