【问题标题】:Accesing a URL opens 2 pages (in two tabs), I want to be able to select one of the two访问 URL 会打开 2 个页面(在两个选项卡中),我希望能够选择两个页面之一
【发布时间】:2020-08-01 02:03:54
【问题描述】:

我正在使用 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

非常感谢任何帮助!

【问题讨论】:

标签: python selenium web-scraping


【解决方案1】:

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

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 来识别目标标签

如果有帮助,请告诉我。

【讨论】:

  • 谢谢,我尝试了代码,但它仍然将我重定向到登录页面。我只是假设我已经被阻止了一段时间,但是当我使用 chrome 作为浏览器(python 和 selenium 之外)分析相同的行为时,打开 URL 会打开两个窗口,所以我认为有一种方法可以切换到一个或另一个并绕过登录页面
  • 是的,您可以使用 selenium 切换选项卡 - 请参阅下面的 url 以获取更多信息。 stackoverflow.com/questions/9588827/…
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 2014-01-25
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多