|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 itzyx 于 2023-8-5 11:41 编辑
各位大佬最近想做个访问公司人事网页考勤数据的脚本,来统计自己的加班时长。
因为网页访问需要账号密码登录,我一开始看网上可以用会话的方法解决,但是找半天没找到登录的相关信息,无奈只能登录后,获取cookie 去模拟登录。
用cookie 已经成功登录,通过find_all 获取到了考勤的关键字,但考勤是在人事主页面点进去的另一个网页, 用关键字提取,我获取到了这个url地址
首先我没用cookie,直接request.get, 但是获取的数据不对,我又分别用登录主页面的cookie,和考勤界面的cookie, 去获取数据,但都不是我想要的,看视频,百度都没解决,所以想请教各位大佬,有没有什么办法能解决?
下面是截图还有代码:
- import requests
- import urllib.parse
- from bs4 import BeautifulSoup
- # 输入的Cookie字符串
- cookie_str = "cookies 这里搞个演示"
- # 解码Cookie字符串
- decoded_cookie = urllib.parse.unquote(cookie_str)
- # 分割Cookie
- cookie_parts = decoded_cookie.split("; ")
- # 创建一个字典来存储Cookie项
- cookie_data = {}
- for part in cookie_parts:
- key, value = part.split("=")
- cookie_data[key] = value
- login_url = 'https://hr.xxxx.com/portal/index' # 页面URL
- headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'}
- response = requests.get(login_url, cookies=cookie_data, headers=headers)
- if response.status_code == 200:
- response.encoding = response.apparent_encoding # 文字解码
- soup = BeautifulSoup(response.text, 'html.parser')
- app = soup.find('a', attrs={'title': "个人考勤查询"}).get('href')
- url2 = 'https://hr.xxxx.com/' + app
- response = requests.get(url2, cookies=cookie_data, headers=headers)
- response.encoding = response.apparent_encoding # 文字解码
- soup = BeautifulSoup(response.text, 'html.parser')
- times=soup.find_all('span')
- else:
- print('网页登录失败!')
复制代码
对于动态渲染的数据还是selenium比较适合初学者,它并不复杂,如果没学过可以问chatgpt
你在检查元素那里看到的并不是它的源代码,而是经过动态渲染后构建的文档树,你当然可以看到你想要的数据了,这就是为什么有时候你从检查元素那里复制出来的xpath或css选择器不能用的原因
|
-
登录人事网页,主界面显示的信息
-
点击个人考勤,展示的信息
|