微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在scrapy上解决h-captcha

如何解决在scrapy上解决h-captcha

我使用 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 是要抓取的主要函数,但它似乎不起作用。

有什么见解吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。