python 22天 selenium滚动和常见反爬
一 页面滚动设计
1 语法:执行滚动操作
执行js中滚动代码:window . scrollBy ( x 方向偏移量,y 方向偏移量)
-
x , y 是像素值,
-
窗口左右滚动,就 y =0, 设置x的值,x为正,窗口就向右滚动,x的值为负,窗口就向左滚动,
-
窗口上下滚动就是x为0,设置y的值,y 的值为正,窗口就向下滚动,y的值为负,窗口就向上滚动。
-
为了加载完整个页面,就要让这个页面全部加载完,就要设置整个窗口一直滚动到最后,可以设置一个循环,让这个循环遍历完,就可以加载完这个页面,需要不停的试一试。
-
所有需要的数据都加载完了,就可以去分析数据。
2 . 例题展示
from time import sleep
from selenium.webdriver import Chrome
from bs4 import BeautifulSoup
##执行滚动操作 - 执行js中滚动代码:window.scrollby(x方向偏移量,y方向偏移量)
# 语法:b.execute_script('window.scrollBy(0, 1800)') ## b去执行的脚本代码(写的是执行的代码,就是窗口执行滚动)
b = Chrome()
b.get('https://www.jd.com/')
b.find_element_by_id('key').send_keys('手机\n')
sleep(1)
for x in range(10): # 为了滚动完整个界面,所有,就加入for循环,让它滚动5次,每次滑动700个像素,每次滚动后就睡眠1秒
b.execute_script('window.scrollBy(0, 700)')
sleep(1)
##解析数据,使用bs4
soup = BeautifulSoup(b.page_source,'lxml')
all_goods = soup.select('.gl-warp>li')
print(len(all_goods))
二 自动登录
自动登录即指的是,登录的时候,不需要登录账号,直接登录后,获取数据
2.1 requests 自动登录
-
原理:打开需要人工在浏览器上完成登录操作,获取登录后的cookie(信息),再通过代码发送请求时候携带登录后的cookie
-
流程:
- 第一步:打开要登录网站的地址,检查里面找到cookie代码,赋值粘贴下来。
-
第二步:在hesders里面,加入cookies,键是‘cookie’,键所对应的值是第一步在网站上找到的cookie代码