Я получаю сообщение об ошибке «urllib.error.HTTPError: HTTP Error 403: Forbidden» при очистке определенных страниц и понимаю, что добавление чего-то вроде hdr = {"User-Agent': 'Mozilla/5.0"}
в заголовок является решением для это.urllib.error.HTTPError: HTTP Error 403: Forbidden
Однако я не могу заставить его работать, когда URL-адрес, который я пытаюсь очистить, находится в отдельном исходном файле. Как/где я могу добавить User-Agent в код ниже?
from bs4 import BeautifulSoup
import urllib.request as urllib2
import time
list_open = open("source-urls.txt")
read_list = list_open.read()
line_in_list = read_list.split("\n")
i = 0
for url in line_in_list:
soup = BeautifulSoup(urllib2.urlopen(url).read(), 'html.parser')
name = soup.find(attrs={'class': "name"})
description = soup.find(attrs={'class': "description"})
for text in description:
print(name.get_text(), ';', description.get_text())
# time.sleep(5)
i += 1
Спасибо :)
Вы пробовали читать документы 'urllib'? Или, может быть, использовать что-то более удобное, например ['request'] (http://docs.python-requests.org/en/master/)? – MattDMo
Да, но я все еще не могу заставить его работать. Если я добавлю переменную 'hdr = {" User-Agent ':' Mozilla/5.0 "}' и изменим суп-строку на 'soup = BeautifulSoup (urllib2. urlopen (url, headers = hdr) .read(), 'html.parser') 'Python дает мне неожиданный вклад в слово' headers'. Есть идеи? Спасибо – Espen
Вы не читали мой комментарий. ** 1. ** Перед тем, как задать вопрос, прочитайте [соответствующую документацию] (https://docs.python.org/2/library/urllib2.html#urllib2.urlopen) - в этом случае функция не имеет заголовков '. ** 2. ** Как я уже сказал, и как [документы говорят] (https://docs.python.org/2/library/urllib2.html), вы должны использовать вместо этого 'запросы'. Единственная причина, по которой запросы не находятся в std lib, состоит в том, что она все еще находится в активной разработке, и разработчики не хотели зависеть от расписания выпуска Python. Используй это. Твоей жизни будет легче. – MattDMo