从新窗口返回后无法保留新表值(使用Selenium、BeautifulSoup和Python执行web抓取)

2024-04-26 04:48:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个一次有多行的动态表,它只显示很少的行,所以它有一个“下一步”按钮来移动到下一组值。表中的每一行都是指向“更多详细信息”页面的链接,我试图从该页面获取数据,然后返回到主搜索结果表,单击第二个链接,单击“报废”、“返回”等等。问题是,当我单击“下一步”按钮以获得下一组值,并单击结果中的第一个链接,然后在抓取后返回结果集时,我会看到第一个搜索结果(第1页而不是第2页)。有人能告诉我我做错了什么吗

使用switch_to.window(driver.window_handle[])转到详细信息页面,并使用window_handle[0]返回基本结果页面

尽管如此:

table = driver.find_element_by_xpath(
    '//*[@id="ctl00_ph"]/tbody')
row_table = table.find_element_by_tag_name('tr')
# row_table.find_element(By.TAG_NAME('td'))
count = 21
before = '//*[@id="ctl00_l'
after = '_lnkProperty"]'
all = driver.window_handles
print(all)
window_before = driver.window_handles[0]
#window_before = driver.window_handles()

for i in range(2, count + 1):
    if i < 10:
        link = before + '0' + str(i) + after
    else:
        link = before + str(i) + after
    links.append(link)
    # print(link)
    row_table.find_element_by_xpath(link).click()
    time.sleep(5)
    driver.switch_to.window(driver.window_handles[1])
    print(driver.window_handles)
    print(driver.window_handles[1])
    time.sleep(2)
    html_doc = driver.page_source.encode('utf-8')
    # print(html_doc)
    # driver.back()

    soup = BeautifulSoup(html_doc, 'html.parser')
    time.sleep(2)

" ' ' ' ' ' ' #打印(数据) 驱动程序关闭() 驾驶员。切换到。车窗(前车窗) #driver.switch_to.default_content() pin.append(数据) 打破 时间。睡眠(1)

# elm = driver.find_element_by_xpath('//*[@id="ctl00_phArticle_ctlPropertySearch_ctlSearchResults_pnlAppealSearchResults"]/div[2]/div/a[9])')
elm = driver.find_element_by_class_name('pager-link')
# ('a', class_='pager-link')
if 'inactive' in elm.get_attribute('class'):
    break
else:
    elm.click()
    print('click')
    time.sleep(1)
    print(driver.current_window_handle)

当我从其他窗口返回到该页面时,我仍然需要看到单击“下一步”后显示的结果


Tags: bytimehtmldrivertablelinksleep页面