403 запрещенных ошибок при извлечении HTML с помощью Python, но их можно просмотреть в веб-браузере - PullRequest
0 голосов
/ 15 апреля 2020

При использовании библиотеки запросов в Python для извлечения HTML указанного URL, например. следующим образом:

import requests
temp = requests.get(URL)
HTML = temp.text

Для некоторых URL-адресов это будет запрещено Nginx, возвращая только следующие HTML:

<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

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

Несколько примеров веб-страниц, где это имеет место:

URL = http://socialmarketingwriting.com/complete-guide-successful-social-media-manager/
URL = https://rjmccollam.com/podcast/3/

Можно ли что-нибудь сделать в этих случаях, чтобы избежать ошибки 403?

1 Ответ

0 голосов
/ 16 апреля 2020

При использовании Python Запросы без указания пользовательского агента, использует его пользовательский агент по умолчанию (бот-подобный, я думаю). Это заблокировано многими сайтами. Чтобы увидеть это, go посетите файл robots.txt домена, например:

www.google.com/robots.txt

Вот как вы можете использовать User-Agent:

import requests
from bs4 import BeautifulSoup
URL='https://google.com/search?q=' + sear
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0"
headers = {"user-agent": USER_AGENT} # adding the user agent
resp = requests.get(URL, headers=headers)
soup = BeautifulSoup(resp.content, "html.parser") # use this if you want to scrap the site
...