用selenium模块对网站:http://www.ccgp-liaoning.gov.cn/portalindex.do?method=goPubInfoList的滑块验证码进行验证
时间: 2024-02-04 11:01:50 浏览: 74
基于selenium解决滑块验证码python源码+项目说明+详细注释.tar
5星 · 资源好评率100%
好的,这个网站的滑块验证码比较复杂,需要先进行一些处理才能通过滑动验证。以下是一个基本的思路:
1. 打开网站,点击进入采购公告页面。
2. 点击“全部”按钮,切换到全部采购公告页面。
3. 首先尝试通过点击“查询”按钮绕过滑块验证。
4. 若滑块验证未通过,则进行滑动验证。
5. 滑动验证后,再次点击“查询”按钮,即可获取采购公告列表。
具体实现可以参考以下代码:
```python
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome()
driver.get('http://www.ccgp-liaoning.gov.cn/portalindex.do?method=goPubInfoList')
# 点击进入采购公告页面
driver.find_element_by_link_text('采购公告').click()
# 点击切换到全部采购公告页面
driver.find_element_by_link_text('全部').click()
# 尝试通过点击“查询”按钮绕过滑块验证
driver.find_element_by_id('query').click()
# 判断是否出现滑块验证
if '请完成验证' in driver.page_source:
# 定位滑块元素
slider = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'validate')))
slider_knob = slider.find_element_by_class_name('ui-slider-handle')
# 计算需要滑动的距离
slider_width = slider.size['width']
knob_width = slider_knob.size['width']
distance = slider_width - knob_width
# 模拟滑动操作
ActionChains(driver).click_and_hold(slider_knob).move_by_offset(distance, 0).release().perform()
# 等待滑块验证完成
time.sleep(2)
# 再次尝试点击“查询”按钮
driver.find_element_by_id('query').click()
# 获取采购公告列表
table = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'resultslist')))
rows = table.find_elements_by_tag_name('tr')
for row in rows[1:]:
cells = row.find_elements_by_tag_name('td')
print(cells[1].text)
```
需要注意的是,滑块验证的具体实现方式因网站而异,以上代码仅供参考,具体实现需要根据实际情况进行调整。
阅读全文