用selenuim来爬图片,但下拉操作不成功,地址只能爬一部分
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"]) 我也是这样写的,不过是可以模拟下滑的
https://cdn.jsdelivr.net/gh/jsongmax/img/img/20201117165756.png 页面明显是隐藏了系统滚动条的,自己重新实现了一遍
你需要去看网站怎么实现滚动的 https://cdn.jsdelivr.net/gh/jsongmax/img/img/20201117170255.png
随便找了个以前的代码改的,和你写的一样,但是可以下滑的 本帖最后由 magicianly 于 2020-11-17 17:24 编辑
我想说你是不是看漏了…… 大概看了一下,所有图片的地址是在js里面有一段代码生成的,具体没研究,楼主可以看看有没有用
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 = k || e(c);
k = [function(e) {
return r
}
];
e = function() {
return "\\w+"
}
;
c = 1
}
while (c--)
if (k)
p = p.replace(new RegExp("\\b" + e(c) + "\\b","g"), k);
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++/g);j=N.k;X(j--){t=Y(N)&10;q=N.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, {}))
浏览器直接跑一下这个代码就能看到结果了 imyxuan 发表于 2020-11-17 17:29
大概看了一下,所有图片的地址是在js里面有一段代码生成的,具体没研究,楼主可以看看有没有用
教我一下怎么 搞 直接用浏览器运行js软件
不用模拟Selenium magicianly 发表于 2020-11-17 17:13
我想说你是不是看漏了……
普通爬取 怎么执行这个 154675361 发表于 2020-11-17 17:03
随便找了个以前的代码改的,和你写的一样,但是可以下滑的
这里可以滚动 主要是 漫画里面 hahawangzi 发表于 2020-11-18 09:52
普通爬取 怎么执行这个
普通爬取啥意思,requests就行了啊,感觉还行吧,不难啊
页:
[1]
2