Селен python возвращающий страницу Голова а не Тело - PullRequest
0 голосов
/ 22 января 2020

Я бился головой об этом несколько часов. Через несколько недель я создал код go, который использует python -селен и работает на google colab для очистки сайта супермаркета .

Все было хорошо и хорошо до сегодняшнего дня, когда код перестал работать. Чтобы понять, почему он ломался, я отобразил исходный код страницы и, к своему удивлению, понял, что получаю заголовок страницы с javascript (который я не понимаю), а не с телом вообще, буквально <body></body>. Сам код работает нормально, я проверял его на других URL, таких как python .org /.

Я использую селен 3.141.0 с python 3.6.9, хром-драйвер 79.0.3945.79, на Ubuntu 18.04.3 LTS. И это минимальный код для воспроизведения моей проблемы.

# if running directly on google colab
!apt-get update
!apt install chromium-chromedriver
!pip install selenium

Я пытался использовать различные пользовательские агенты, чтобы попытаться обмануть любые анти-скребки, которые у них могут быть. Проверено на наличие iFrames, но их нет.

import time 
from selenium import webdriver
from bs4 import BeautifulSoup as soup

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
chrome_options.add_argument("user-agent=" + user_agent)

wd = webdriver.Chrome('chromedriver', options=chrome_options)
url = "https://www.continente.pt/stores/continente/pt-pt/public/Pages/category.aspx?cat=Mercearia#/"
wd.get(url)
time.sleep(30)
print(soup(wd.page_source))

Нужно ли мне запускать javascript для загрузки содержимого? У меня нет идей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...