首页 > 解决方案 > 访问 URL 会打开 2 个页面(在两个选项卡中),我希望能够选择两个页面之一

问题描述

我正在使用 selenium 来抓取一些产品页面,但最近我只得到了登录页面(而不是我想要的产品页面)。因此,我尝试在浏览器中加载该页面,结果发现访问任何产品 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=""

然后从我在 python 中使用 chromedriver 的汤中读取每个字段

任何帮助是极大的赞赏!

标签: pythonseleniumweb-scraping

解决方案


抱歉,如果我没有正确理解您的要求,但下面的代码对我来说效果很好,它会一一打开每个产品页面。

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来识别目标选项卡

让我知道它是否有帮助。


推荐阅读