Veer网站爬虫

博主在尝试爬取Veer网站图片时遇到了滑动验证问题,先后尝试了Request、Selenium和Pyppeteer。Selenium初次运行成功,但后续出现滑动验证,可能被网站检测到。Pyppeteer能手动滑动通过验证,但加入自动滑动功能后仍无法稳定工作,疑似存在滑动速度检测。目前未能找到有效解决方案。
摘要由CSDN通过智能技术生成

最近需要从Veer网站上爬一些图,于是去研究了一下,这个网站有时候会出现滑动验证,出现情况不明,试了好几种方法都无法爬取,在此记录一下。

1.Request

用request请求,返回的是滑动验证界面,试着调整request body之类的参数也无效,用Fillter发送过去也是滑动验证洁界面。卒

2.Selenium

后来改用selenium,第一次测试,成功打开网页,获取到数据,以为成功了。在我把代码完善之后,再次测试发现,又出现了滑动验证的界面,且滑条下方有Error,手动滑无效。后面进行多次尝试,比如一些防止selenium被检测的手段,都没有用。后面换了一次ip(用手机热点),第一次成功,之后依旧出现之前的情况,猜测是有新的检测selenium手段,第一次请求发送过去被检测到了,于是后面就出现了滑动验证。卒

3.之前的代码

在网上搜了一下别人写的的Veer网站的爬虫,试了一下都不行。卒

4.Pyppeteer

用Pyppeteer可以正常的打开滑动界面,手动滑有效,可以进去,接下来需要解决滑动验证的问题,加入滑动验证功能后,进行测试,前面几次均成功进入,获取到数据,高兴没多久,可能是又被检测到了,用pyppeteer进行滑动失效,必须手动滑才能进去,猜测可能是有滑动速度检测,于是加入滑动速度调整的功能,仍然是无法进入。卒。放弃。

Pyppeteer的代码如下:

###selenium的代码
# from selenium import webdriver
# import time,re,requests,os,json
# from bs4 import BeautifulSoup
# from selenium.webdriver.chrome.options import Options
# from selenium import webdriver
# from selenium.webdriver import ChromeOptions

# browser = webdriver.Chrome()
# browser.get('https://www.veer.com/search-image/yazhouren/?sort=best&page=5')


###Pyppeteer的代码
import asyncio,time
import random
from pyppeteer import launch
from pyquery import PyQuery as pq

url = 'https://www.veer.com/search-image/yazhouren/?sort=best&page=5'
async def fetchUrl(url):
    browser = await launch({'headless': False, 'dumpio': True, 'autoClose': False})
    page = await browser.newPage()
    await page.setViewport(viewport={'width': 1280, 'height': 1280})#调整网页大小
    await page.evaluateOnNewDocument('() =>{ Object.defineProperties(navigator,'
                                     '{ webdriver:{ get: () => false } }) }')
    await page.goto(url)
    time.sleep(1)

    ###滑动验证功能
    # 将鼠标移动到滑块上,slide_id是滑块的位置
    #网页中:<span id="nc_1_n1z" class="nc_iconfont btn_slide" style="left: 0px;"></span>
    slide_id='span#nc_1_n1z'
    await page.hover(slide_id)

    # 2 按下鼠标
    await page.mouse.down()

    # 3 滑动
    move_x=0
    move_y=0
    for i in range(10):#每滑动一段,随机停一会儿
        move_x_random=random.randint(100,500)
        move_y_random=random.randint(0,50)
        move_x+=move_x_random
        move_y+=move_y_random
        sleep_random=random.uniform(0,0.2)
        # print(move_x,move_y)
        await page.mouse.move(move_x, move_y)
        time.sleep(sleep_random)

    # 4 松开鼠标
    await page.mouse.up()
    time.sleep(1)

    print('HTML:', await page.content())

asyncio.get_event_loop().run_until_complete(fetchUrl(url))



怀疑这个网站用了AI反爬?如果有大佬解决了这个问题,请一定评论告诉我。。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值