python - 访问 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 的汤中读取每个字段
任何帮助是极大的赞赏!
解决方案
抱歉,如果我没有正确理解您的要求,但下面的代码对我来说效果很好,它会一一打开每个产品页面。
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
来识别目标选项卡
让我知道它是否有帮助。
推荐阅读
- c# - C# 中的 Bool to bit
- javascript - 我可以在 HTML 中使用带有“source”标签的“srcset”属性吗?
- javascript - 在 tensorflow.js 中加载图像并转换为张量
- python - 如何提取与特定模式匹配的字符串的一部分,但对于连续的所有情况,并使用 pandas 用逗号分隔它们
- javascript - 在 pug 脚本标签中存储 nodejs 对象
- ios - iOS 中点击操作的 Firebase 推送通知
- android - 使用可为空的 parcelable 参数编译时出现 Android 数据绑定错误
- excel - 跨工作表突出显示重复项跳过第一个实例
- c# - 寻找优化的数据结构以查找下一个最接近的元素
- javascript - Google Analytics 使用 GTag,如何在 JavaScript 中为自定义细分添加代码?