Парсинг блокируется, получает ответ читателя буфера - PullRequest
2 голосов
/ 30 мая 2020

Итак, я создал приложение Django, используя Beautiful soup для очистки веб-сайта, и оно отлично работало в процессе разработки. Однако затем развернул веб-приложение на сервере linux и запустил его, и именно тогда запрос был заблокирован, и я получил эту ошибку

You don't have permission to access "http://www.xxxxxx.com/en-ca?" on this server.<p>
Reference #xxxxxxxxxxxxxx

Я попытался использовать заголовки Mozilla и Chrome, но это по-прежнему не работает.

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Saf$
         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
         'Referer': 'https://cssspritegenerator.com',
         'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
         'Accept-Encoding': 'none',
         'Accept-Language': 'en-US,en;q=0.8',
         'Connection': 'keep-alive'}
    req = get(url, headers=hdr)
    soup = BeautifulSoup(req.content,'html.parser')
    print(soup)

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

class AppURLopener(urllib.request.FancyURLopener):
    version = "Mozilla/5.0"
def scrape():
   opener = AppURLopener()
   response = opener.open(url)
   print('response: ', response)

, который дает мне ответ

response:  <addinfourl at 139782695145200 whose fp = <_io.BufferedReader name=-1>>

чего я не понимаю

Так что мне просто нужна была помощь относительно того, что это за ответ и как я могу его использовать?

Кроме того, следует ли мне изучить использование чего-то вроде Selenium вместо beautifulSoup, поскольку это может быть лучшим вариантом для доступа к сайту незамеченным?

Плюс, поскольку запрос блокируется только на сервере linux при развертывании, следует ли мне попробовать другое средство развертывания, такое как heroku?

...