python-3.x - 如果没有下一步按钮,只有编号可用,我如何转到下一页?
问题描述
如何进入下一页,因为没有下一步按钮或类似的东西,他们只提供编号。
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import time
url = 'http://dciindia.gov.in/DentistsSearch.aspx?Reg_Type=D&RegUnder=0&IDRId=&IDRName=&CourseId=0&RegDate=0&CouncilId='
driver = webdriver.Chrome('C:\chromedriver.exe')
driver.get(url)
driver.maximize_window()
next_page = True
while next_page == True:
soup = bs(driver.page_source, 'html.parser')
table = soup.find('table',{'id':'gvSearchDentistlist'})
try:
rows = table.find_all('tr')
for row in rows:
if len(row.find_all('td')) == 6:
data = row.find_all('td')
root_url = data[5].input['onclick'].split(",")[4]
link ='http://dciindia.gov.in/'+root_url
print("LINK:"+link)
except:
pass
try:
driver.find_element_by_xpath('//*[@id="gvSearchDentistlist"]/tbody/tr[52]/td/table/tbody/tr/td[1]/a').click()
time.sleep(1)
except:
print ('No more pages')
next_page=False
driver.close()
请帮助我解决这个条件。谢谢。
解决方案
您的每个next button
均值都有独特的属性,其中包含a[href*="Page$this_is_number_of_pages"]
,其中之一:
a[href*="Page$10"]
因此,我建议您使用css_selector
而不是xpath
,并为循环中的每个页面使用增量:
next_page_number=2
next_page = True
while next_page == True:
....
....
....
try:
driver.find_element_by_css_selector('a[href*="Page$' +str(next_page_number) +'"]').click()
next_page_number+=1
time.sleep(1)
except:
print ('No more pages')
next_page=False
或者,如果您仍想使用 xpath,请使用以下命令:
driver.find_element_by_xpath('//a[contains(@href,"Page$' +str(next_page_number) +'")]').click()
*更新
它将for loop
如下所示:
for next_page_number in range(2, 100+1):
....
....
driver.find_element_by_css_selector('a[href*="Page$' +str(next_page_number) +'"]').click()
time.sleep(1)
推荐阅读
- javascript - 我想知道我是否必须为 Android 重写我的代码
- java - 具有整数数组的字符串方法
- python-requests - 如何使用 Python3.6.9 urllib3 发送基本授权标头
- javascript - 如何使用 Redux 中的传入对象更新状态(对象数组)?
- oop - TObjectList.DisposeOf 上的指针操作无效
- python - 使用 Python 在 PostgreSQL 的 SQL 语句中分配/替换值列表
- excel - 根据来自其他工作表的查找值删除/添加行
- css - 如何使用断点使 mixin 助手响应?
- c# - WPF WebHostBuilder 不包含 UseKestrel 的定义
- arrays - 将变量与 Math.max(...arr) 进行比较未返回准确答案