我正在使用 Selenium 进行抓取,当有验证码时,我使用 2captcha 服务来解决验证码问题,如下所示:
from twocaptcha import TwoCaptcha
solver = TwoCaptcha(CAPTCHA_KEY)
captcha = response.xpath("//div[@class='h-captcha' and @data-sitekey]").get()
if captcha:
url = driver.current_url
site_key = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='h-captcha']"))).get_attribute("data-sitekey")
result = solver.hcaptcha(sitekey=site_key, url=url)
driver.execute_script('document.getElementsByName("h-captcha-response")[0].innerHTML = "{}"'.format(result['code']))
time.sleep(1)
driver.find_element_by_xpath("/html/body/form/input").click()
我现在继续使用scrapy,但是当验证码发生时,我试图找到一种方法来使用scrapy 的2captcha 服务。我确实得到了结果,但不确定如何使用来移动:
solver = TwoCaptcha(CAPTCHA_KEY)
captcha = response.xpath("//div[@class='h-captcha' and @data-sitekey]").get()
if captcha:
site_key = response.xpath("//div[@class='h-captcha']/@data-sitekey").get()
result = self.solver.hcaptcha(sitekey=site_key, url=response.url)
# AFTER WHAT??
我试过类似的东西:
`scrapy.FormRequest.from_response(response, formdata={'h-captcha-response': result['code']}, callback=self.parse)`
主要功能在哪里self.parse
刮,但它似乎不起作用。
有什么见解吗?