Python Requests - «Чтобы продолжить, ваш браузер должен принимать куки-файлы и иметь включенный JavaScript». - PullRequest
0 голосов
/ 25 декабря 2018

Я хотел бы почистить некоторые объявления для личного использования с mobile.de.

Я использую python 3.6 с запросами lib, но столкнулся с проблемой при проверке некоторых ботов.Как я могу передать этот шлюз с их сайта?

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.mobile.de/?lang=en")
bs = BeautifulSoup(r.content, 'lxml')
print(bs)

Эта часть кода отображает меня следующим образом:

<p>To continue your browser has to accept cookies and has to have JavaScript enabled.</p>

Где я могу найти логику, которую мне нужно решить, чтобыпередать это?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Причина, по которой вы получили неожиданный контент, в том, что у вас нет действительного заголовка.Как сказал @afit.Но To continue your browser has to accept cookies and has to have JavaScript enabled. имеет смысл, потому что, если вы не включите JavaScript, вы не загрузите полный контент.

Примечание. Я рекомендую использовать selenium для этого.requests_html не может получить доступ к веб-сайту успешно из-за отсутствия подходящего заголовка во время его рендеринга.Кстати, если вы хотите получить доступ к URL-адресу внутри JavaScript и захватить контент, это будет тяжелая работа.

from bs4 import BeautifulSoup
from selenium import webdriver

dr = webdriver.Chrome()
dr.get("https://www.mobile.de/?lang=en")
bs = BeautifulSoup(dr.page_source,"lxml")
0 голосов
/ 25 декабря 2018

Они могут делать это разными способами, от тривиального до хитрого, чтобы обойти в масштабе.Один из подходов состоит в том, чтобы изменить ваш User-Agent, так как их самый простой подход состоит в том, чтобы отклонять запросы, основанные на этом.

r = requests.get(
    'https://yoursite.com',
    headers = {
        'User-Agent': 'Popular browser\'s user-agent',
    }
)

Это не похоже на пример URL, который вы показываете, но они могутожидать, что этот URL будет попадать по после того, как попадет на другую страницу сайта, на которой пропущен файл cookie.Если это так, сделайте более ранний запрос и укажите файл cookie в вашем звонке requests.

...