При переходе по URL-адресу открывается 2 страницы (на двух вкладках), я хочу иметь возможность выбрать одну из двух - PullRequest
2 голосов
/ 01 августа 2020

Я использую селен для удаления некоторых страниц продукта, но в последнее время я получаю только страницу входа в систему (вместо страницы продукта, которую я хотел). Итак, я попытался загрузить страницу в моем браузере и обнаружил, что при доступе к любому URL-адресу продукта откроются две вкладки: одна для входа в систему, а другая для самого продукта. Поэтому мне не нужно входить в систему, мне просто нужно иметь возможность отбрасывать одну из двух страниц, которые открываются каждый раз, когда я пытаюсь получить доступ к URL-адресу.

У меня есть фрейм данных с URL-адресами и разные поля, которые мне нужно очистить, поэтому я передаю URL-адрес как «myurl» этой функции:

item_id=myurl[20:-5]
browser.get(myurl)
html = browser.page_source
soup = BeautifulSoup(html, 'lxml')
try:
    titulo = soup.find('div', {'class':'sku-name'}).get_text(strip=True)
except:
    titulo=""

, а затем читаю каждое поле из супа, который я использую в chromedriver в python

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 01 августа 2020

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

from selenium import webdriver
import time

driver = webdriver.Chrome()

# you can make a list of products and feed it into the main URL. to get the
# specific product page. But if you have the range then you can use the below code.
# Save that in a variable and process it by Beautifulsoup.

for i in range(4487300, 4487401):
    driver.get(f'https://item.jd.com/{i}.html')
    time.sleep(5)
    product_page_source = driver.page_source
    print(product_page_source)

Примечание. многие сайты, которые предоставят вам ограниченный доступ к странице продукта сразу после некоторого порога, перенаправят вас на свою страницу входа для аутентификации. В вашем случае может быть то же самое, но в вашем случае открываются 2 вкладки. вы можете использовать driver.window_handles для определения целевой вкладки

Сообщите мне, если это полезно.

...