请问各位少侠,python+selenium爬虫,发送等待指令就被检测?

使用python+chromedriver+selenium爬取某网站,因为需要输入,查询项目的编号和验证码,因为要查三万多条所以就想写个爬虫解决

网址如下:

http://sq.nmpa.gov.cn/datasearch_nmpa/schedule/search.jsp?tableId=43&tableName=TABLE43&columnName=COLUMN464,COLUMN475&title=%D2%A9%C6%B7%D7%A2%B2%E1%BD%F8%B6%C8%B2%E9%D1%AF

 

chrome版本:87.0.4280.88 

from selenium import webdriver
from selenium.webdriver import ChromeOptions
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 pandas as pd
option = webdriver.ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])

为了把window.navigator.webdriver的参数改成undifine,我添加了option

browser = webdriver.Chrome(options=option)
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{
 
    "source":"""
        Object.defineProperty(navigator,'webdriver',{
            get: () => undefined
        })
    """
 
})

用webdriver打开目标页面

url = 'http://sq.nmpa.gov.cn/datasearch_nmpa/schedule/search.jsp?tableId=43&tableName=TABLE43&columnName=COLUMN464,COLUMN475&title=%D2%A9%C6%B7%D7%A2%B2%E1%BD%F8%B6%C8%B2%E9%D1%AF'

browser.get(url)

找到【查询】按钮的xpath

xpath = 'html/body/div[3]/div[2]/table[1]/tbody/tr/td/form/table/tbody/tr[2]/td/input[6]'

到这步为止,我点击查询按钮还是正常的,如果输错验证码会有弹窗,如果输入对了就会进入要查询的数据的详情页面。但是只要执行下面这句话

locat = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, xpath)))

再点击【查询】就没有任何反应,弹窗也不出来了,即使受理号和验证码输入正确再点【查询】也没有任何反应,但是点击验证码的图片,验证码还是可以更换的,请问这种情况该如何解决呢?

换个思路,用别的方法鉴别是否正确的打开网页,用time.sleep来等待

反爬机制,比如 百度知道 网站,使用webdriver抓取数据,当访问到一定次数的时候,会出现一个滑动画面验证;

我的思路:

1,伪造UA

2,建立代理IP池,轮换访问

3,使用类似图像识别并正反纠正,或者滑动等方式