吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1660|回复: 13
收起左侧

[求助] 用selenuim来爬图片,但下拉操作不成功,地址只能爬一部分

[复制链接]
hahawangzi 发表于 2020-11-17 16:03
url = "https://www.89tv.cc/Comic/885.html"
headers={
         'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
      
         
        }

def token(adr:str):
    driver=webdriver.Chrome()
    driver.get(adr)
    page=driver.page_source
    #r2=requests.get(adr,headers=headers)
    soup2=BeautifulSoup(page,"lxml")
    #print(soup2)
    s2=soup2.find("ul",class_="comic-contain")
    #print(s2)
    n=0
    for j in s2.find_all("li"):
        print(j.find("img").get("src"))
        time.sleep(2)
        n+=300
        driver.execute_script("window.scrollBy(0, 700)"); 这里浏览器不下拉不成功,各位能否帮忙看看。
         #我试过直接用requests.get 但是无法获取图片 用了JS加载的,用selenuim 可以抓取,但是浏览器需要下拉才行,但是下拉没反应
    driver.close()   
def main():
    dict={}
    r=requests.get(url,headers=headers)
    soup=BeautifulSoup(r.text,"lxml")
    #print(soup)
    s=soup.find("ul",class_="list-unstyled text-center vod-item-play ff-item-playurl")
    for i in s.find_all("li",class_="col-xs-4"):
        dict["title"]=i.getText()
        dict["addr"]=i.find('a').get("href")
        print(dict["title"])
        #print(dict["addr"])
        token(dict["addr"])

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

154675361 发表于 2020-11-17 16:59
我也是这样写的,不过是可以模拟下滑的
fightingmy 发表于 2020-11-17 16:59
页面明显是隐藏了系统滚动条的,自己重新实现了一遍
你需要去看网站怎么实现滚动的
154675361 发表于 2020-11-17 17:03



随便找了个以前的代码改的,和你写的一样,但是可以下滑的
magicianly 发表于 2020-11-17 17:13
本帖最后由 magicianly 于 2020-11-17 17:24 编辑

QQ截图20201117171218.png
我想说你是不是看漏了……
imyxuan 发表于 2020-11-17 17:29
大概看了一下,所有图片的地址是在js里面有一段代码生成的,具体没研究,楼主可以看看有没有用
[JavaScript] 纯文本查看 复制代码
eval(function(p, a, c, k, e, r) {
    e = function(c) {
        return (c < a ? "" : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
    }
    ;
    if (!"".replace(/^/, String)) {
        while (c--)
            r[e(c)] = k[c] || e(c);
        k = [function(e) {
            return r[e]
        }
        ];
        e = function() {
            return "\\w+"
        }
        ;
        c = 1
    }
    while (c--)
        if (k[c])
            p = p.replace(new RegExp("\\b" + e(c) + "\\b","g"), k[c]);
    return p
}("p y(){i=\"J+/=\";O.D=p(c){s a=\"\",b,d,h,f,g,e=0;C(c=c.z(/[^A-G-H-9\\+\\/\\=]/g,\"\");e<c.k;)b=i.l(c.m(e++)),d=i.l(c.m(e++)),f=i.l(c.m(e++)),g=i.l(c.m(e++)),b=b<<2|d>>4,d=(d&15)<<4|f>>2,h=(f&3)<<6|g,a+=7.5(b),w!=f&&(a+=7.5(d)),w!=g&&(a+=7.5(h));v a=u(a)};u=p(c){C(s a=\"\",b=0,d=17=8=0;b<c.k;)d=c.o(b),Q>d?(a+=7.5(d),b++):R<d&&S>d?(8=c.o(b+1),a+=7.5((d&F)<<6|8&r),b+=2):(8=c.o(b+1),x=c.o(b+2),a+=7.5((d&15)<<12|(8&r)<<6|x&r),b+=3);v a}}s B=I y(),T=W['K'+'L'].M(''),N=W['n'+'P'+'e'],j,t,q;N=N.U(/\\d+[a-V-Z]+/g);j=N.k;X(j--){t=Y(N[j])&10;q=N[j].z(/\\d+/g,'');T.11(t,q.k)}T=T.13('');14=16.E(B.D(T));", 62, 70, "|||||fromCharCode||String|c2||||||||||_keyStr|len|length|indexOf|charAt||charCodeAt|function|str|63|var|locate|_utf8_decode|return|64|c3|Base|replace|||for|decode|parse|31|Za|z0|new|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|DA|TA|split||this|onc|128|191|224||match|zA||while|parseInt||255|splice||join|_v||JSON|c1".split("|"), 0, {}))


浏览器直接跑一下这个代码就能看到结果了
 楼主| hahawangzi 发表于 2020-11-18 09:24
imyxuan 发表于 2020-11-17 17:29
大概看了一下,所有图片的地址是在js里面有一段代码生成的,具体没研究,楼主可以看看有没有用
[mw_shl_co ...

教我一下怎么 搞 直接用浏览器运行js软件
不用模拟Selenium
 楼主| hahawangzi 发表于 2020-11-18 09:52
magicianly 发表于 2020-11-17 17:13
我想说你是不是看漏了……

普通爬取 怎么执行这个
 楼主| hahawangzi 发表于 2020-11-18 09:53
154675361 发表于 2020-11-17 17:03
随便找了个以前的代码改的,和你写的一样,但是可以下滑的

这里可以滚动 主要是 漫画里面
magicianly 发表于 2020-11-18 09:56
hahawangzi 发表于 2020-11-18 09:52
普通爬取 怎么执行这个

普通爬取啥意思,requests就行了啊,感觉还行吧,不难啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表