鱼C论坛

 找回密码
 立即注册
查看: 3481|回复: 9

[已解决]Selenium中如何定位这个元素

[复制链接]
发表于 2023-1-14 11:18:44 | 显示全部楼层 |阅读模式
50鱼币
求助各位鱼友:我试图从该网站获取下图中,标红框的这几个数据。现在是用python+selenium爬取,但是网页数据全部加载后,从driver.page_source中都没能找到这几个数值,希望大神们能帮我解答两个问题:
1、这几个数值是如何传加载进来的(如果数值不在html的文本中,那应该在某个js中,但是我也知道怎么找这个js接口)?
2、怎么定位到这个数值?(不是前七天的,前七天的在label中能读到)

网页:https://metrodb.org/index/beijing.html
要定位抓取的数值:799.49 和796.71

网页截图.jpg
最佳答案
2023-1-14 11:18:45
QingXin 发表于 2023-1-17 10:31
嗯嗯,还是非常感谢!终于明白了这个数据原来是这么加载显示的,之前确实没有想到会有js加密的情况。这两 ...

那是不是可以结贴呢?

最佳答案

查看完整内容

那是不是可以结贴呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-14 11:18:45 | 显示全部楼层    本楼为最佳答案   
QingXin 发表于 2023-1-17 10:31
嗯嗯,还是非常感谢!终于明白了这个数据原来是这么加载显示的,之前确实没有想到会有js加密的情况。这两 ...

那是不是可以结贴呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-14 15:49:30 | 显示全部楼层
用<>把代码贴出来吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-14 20:52:49 | 显示全部楼层
本帖最后由 ba21 于 2023-1-14 21:03 编辑

先鼠标移动到柱上,让数据加载出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-15 09:42:29 | 显示全部楼层
suchocolate 发表于 2023-1-14 15:49
用把代码贴出来吧。

这里是现在的代码,中间那部分不会写,不知道怎么获取
import time
from selenium import webdriver

driver = webdriver.Firefox()

city_list = ['beijing','shanghai','guangzhou','shenzhen','chengdu','nanjing','wuhan','chongqing','xian', 'tianjin']
for city in city_list:
    driver.get('https://metrodb.org/index/%s.html'%city)
    time.sleep(3)
    text = driver.page_source
    
    这里是需要填入的代码,获取页面的每个日期date和流量flow
    
        print(date,flow)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-15 09:47:54 | 显示全部楼层
ba21 发表于 2023-1-14 20:52
先鼠标移动到柱上,让数据加载出来

嗯,鼠标移上去之后从悬浮框里获取似乎是有可能,可是怎么让鼠标移动到那个柱状图的条块上呢,感觉又进入了一个更大的坑【捂脸】
实际上,我有一个包含二三十城市的列表,不只是北京地铁,希望还是一个自动化的流程,不是我自己把鼠标移过去。。。

代码大概是这样的
import time
from selenium import webdriver

driver = webdriver.Firefox()

city_list = ['beijing','shanghai','guangzhou','shenzhen','chengdu','nanjing','wuhan','chongqing','xian', 'tianjin']
for city in city_list:
    driver.get('https://metrodb.org/index/%s.html'%city)
    time.sleep(3)
    text = driver.page_source
    
    这里是需要填入的代码,获取页面的每个日期date和流量flow
    
        print(date,flow)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-15 13:37:29 | 显示全部楼层
QingXin 发表于 2023-1-15 09:42
这里是现在的代码,中间那部分不会写,不知道怎么获取


它这个页面也15日数据,前10天的在cityflowChart里可以用re拿到
import re
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.firefox.options import Options


options = Options()
options.add_argument('-headless')
driver = Firefox(options=options)
wait = WebDriverWait(driver, 10)
citys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen', 'chengdu', 'nanjing', 'wuhan', 'chongqing', 'xian',
         'tianjin']
for city in citys:
    driver.get(f'https://metrodb.org/index/{city}.html')
    ele = wait.until(expected.visibility_of_element_located((By.ID, 'cityflowChart')))
    # print(ele.get_attribute("outerHTML"))
    s = ele.get_attribute("outerHTML")
    slst = re.findall(r'前10项是——(.*?)"', s)
    result = slst[0].split(',')
    print(result)
driver.quit()
但是后5天的数据,确实没有直接写在html里,如果用移动鼠标的办法,也比较麻烦。因为selenium移动鼠标要先找目的元素,而要找的后5天的柱状图并不是直观的元素,这个网页需要研究一下js,然后让python执行js,不过这部分我不熟,得等其他人看看了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-15 21:17:39 | 显示全部楼层
QingXin 发表于 2023-1-15 09:47
嗯,鼠标移上去之后从悬浮框里获取似乎是有可能,可是怎么让鼠标移动到那个柱状图的条块上呢,感觉又进入 ...

只能帮到这了。
2023115_211542.png


2023115_211559.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-17 10:31:30 | 显示全部楼层
ba21 发表于 2023-1-15 21:17
只能帮到这了。

嗯嗯,还是非常感谢!终于明白了这个数据原来是这么加载显示的,之前确实没有想到会有js加密的情况。这两天研究了一下,尝试用driver.execute_script(''MetroDB('x7Bjg8N+')),但是返回None,没结果。不过你的解答还是让我找了方向了,感谢感谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-17 10:38:46 | 显示全部楼层
suchocolate 发表于 2023-1-15 13:37
它这个页面也15日数据,前10天的在cityflowChart里可以用re拿到
但是后5天的数据,确实没有直接写在ht ...

感谢,比之前我只能找前七八天的,还是进步了。js这个确实是难搞,哎~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 21:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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