BeautifulSoup возвращает ошибку 403 для некоторых сайтов - PullRequest
0 голосов
/ 12 января 2019

Я не понимаю, почему я получаю ошибку 403 для некоторых из этих сайтов.

Если я посещаю URL-адреса вручную, страницы загружаются нормально. Нет другого сообщения об ошибке, кроме ответа 403, поэтому я не знаю, как диагностировать проблему.

from bs4 import BeautifulSoup
import requests    

test_sites = [
 'http://fashiontoast.com/',
 'http://becauseimaddicted.net/',
 'http://www.lefashion.com/',
 'http://www.seaofshoes.com/',
 ]

for site in test_sites:
    print(site)
    #get page soure
    response = requests.get(site)
    print(response)
    #print(response.text)

Результат выполнения вышеуказанного кода ...

http://fashiontoast.com/

Response [403]

http://becauseimaddicted.net/

Response [403]

http://www.lefashion.com/

Response [200]

http://www.seaofshoes.com/

Response [200]

Может кто-нибудь помочь мне понять причину проблемы и решение, пожалуйста?

1 Ответ

0 голосов
/ 12 января 2019

Иногда страница отклоняет запросы GET, которые не идентифицируют User-Agent.

Посетите страницу с помощью браузера (Chrome). Правый клик, затем «Осмотреть». Скопируйте заголовок User-Agent запроса GET (см. Вкладку «Сеть».

enter image description here

from bs4 import BeautifulSoup
import requests

with requests.Session() as se:
    se.headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "Accept-Encoding": "gzip, deflate",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Language": "en"
    }


test_sites = [
 'http://fashiontoast.com/',
 'http://becauseimaddicted.net/',
 'http://www.lefashion.com/',
 'http://www.seaofshoes.com/',
 ]

for site in test_sites:
    print(site)
    #get page soure
    response = se.get(site)
    print(response)
    #print(response.text)

Выход:

http://fashiontoast.com/
<Response [200]>
http://becauseimaddicted.net/
<Response [200]>
http://www.lefashion.com/
<Response [200]>
http://www.seaofshoes.com/
<Response [200]>
...