python如何爬/抓取/获得js渲染后的页面
这个时候你就会发现页面没了,因为他不让你爬,所以我们换一个(你也可以使用黑魔法,我不会)我该如何获取我页面的XPATH,这里以爱企查为例(这只是举例)直接在输入框内点击检查。
·
好久没写python了,我最近工作之余,想试试爬下自己内部的页面,看看能不能做个web自动化,结果发现,往上的爬虫资料一大堆,能满足我功能的屈指可数,主要是公司的内部页面做了一堆鉴权和防护。可恶
第一步,如何绕过指纹登录
- 访问内网的系统页面的时候,不管你登陆了没有,只要是识别到机器访问,他就要弹一个指纹登录,我不会,根本绕不过去,所以我没绕过指纹登录,万幸的是他只弹一次指纹登录,弹了之后就可以输入账号密码,可以正常访问各种页面了,真不错~
- 每次访问页面的时候,既然指纹登录只需要使用一次,那么我就自己指纹登录一下(完美的留下了自己的作案证据),之后的后续操作就可以用脚本完成了,于是我写了一个脚本,在指纹登录之后,识别屏幕的分辨率,使用python模拟鼠标挪到账号密码处,点击输入框输入账号密码,之后模拟鼠标挪到登录按钮,模拟点击,完美。
有人肯定会问用webdriver获取到driver之后,直接使用find_element获取到页面信息多好,但是公司是js加载的页面数据,由于我第一次不知道怎么加载js的数据,所以我就这样处理了
- python如何模拟鼠标挪移
可以使用pyautogui来模拟,x是横向移动坐标,y是纵向移动坐标
pyautogui.moveTo(x, y, duration=1)
- python如何模拟鼠标点击
也是使用pyautogui,这行代码就是点击
pyautogui.click()
- python模拟键盘输入信息
可以使用keyboard,这行代码就是输入信息,记得把xxx换成你的内容,不要直接用
keyboard.type('xxx')
第二步,进去了页面还是js渲染的我怎么办
- 你可以继续使用xy,模拟鼠标移动操作页面,但是界面有10000个按钮那你肯定就完了
- 因此我百度了好久,为什么百度了好久,因为我喜欢用百度
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH,
'这里输入你的页面输入框的XPATH'))
)
如果这个代码太长了我不想这么长怎么办?那你短一点
driver = webdriver.Chrome(options=option)
waitWebJsLoad = WebDriverWait(driver, 10)
element = waitWebJsLoad.until(EC.presence_of_element_located((By.XPATH, 'xxx')))
-
我该如何获取我页面的XPATH,这里以爱企查为例(这只是举例)
-
右键输入框
-
直接在输入框内点击检查
-
这个时候你就会发现页面没了,因为他不让你爬,所以我们换一个(你也可以使用黑魔法,我不会)
- 我们换个目标,试试csdn
- 依旧是先鼠标定位到输入框,然后右键–检查,完美,获取到了input输入框的html
- 之后右键蓝色的这个html,点击copy,点击copy XPath,就可以获取了,完美,也可以使用Copy full XPath
第三步,我该怎么使用element进行输入
注意element是第二步的代码获取到的,不要搜这个是啥东西,这只是一个变量名字,xxx依旧要替换,换成你的参数
element.send_keys('xxx')
第四步,我一共使用了哪些第三方包
import pyautogui
from bs4 import BeautifulSoup
from pynput.keyboard import Controller
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
第五步,我爬页面犯法被抓了怎么办
坦白从宽,抗拒从严,监狱是学校,监狱是工厂 只要志气高,不怕起点低
更多推荐
已为社区贡献1条内容
所有评论(0)