python xpath定位元素方法_[爬虫]xpath无法定位tbody标签(已解决)

2020.7.15更新

以前的讲法有点问题,所以再次更新一下,也算是填坑

定位不到tbody是因为标准差异,tbody不是必须存在的

chrome的Elements标签页的tbody是肯定存在的

bVbJFwJ

但是程序员写的网页不一定会有tbody

但是在chrome的Elements标签页不管返回的html有没有tbody,chrome都会有(有就不加,没有就自动加上)

所以

用selenium请求网页数据,就加上tbody标签,因为selenium返回的必定是包含tbody的(因为返回的是chrome的Elements标签页的内容)

用requests请求的时候,就自己看看源html内是否真的包含tbody标签(可以在chrome的network标签页下查看)

bVbJFy1

总结:服务器返回的html不一定有tbody标签(具体看网站前端程序员有没有加tbody标签),但是经过chrome渲染的render html必定包含tbody标签(服务器返回没有的话,浏览器就给你自动加上)

以下是原文:

写于2019.10.29日

问题发现

个人比较喜欢用xpath解析网页,

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫可以用于12306抢票,具体步骤如下: 1. 首先,需要安装selenium和chromedriver,selenium是一个自动化测试工具,chromedriver是一个控制Chrome浏览器的驱动程序。 ```python !pip install selenium ``` 2. 导入selenium和time模块,设置浏览器驱动路径和乘车日期等信息。 ```python from selenium import webdriver import time # 设置浏览器驱动路径 driver_path = 'chromedriver.exe' # 设置乘车日期 date = '2022-01-01' ``` 3. 打开Chrome浏览器,并访问12306官网。 ```python # 打开Chrome浏览器 driver = webdriver.Chrome(executable_path=driver_path) # 访问12306官网 driver.get('https://www.12306.cn/index/') ``` 4. 登录12306账号,输入用户名和密码,然后手动输入验证码。 ```python # 等待用户手动输入验证码 time.sleep(30) ``` 5. 在出发地和目的地输入框中输入相应的城市名称,然后选择乘车日期。 ```python # 输入出发地和目的地 driver.find_element_by_id('fromStationText').click() driver.find_element_by_id('fromStationText').clear() driver.find_element_by_id('fromStationText').send_keys('北京') driver.find_element_by_id('toStationText').click() driver.find_element_by_id('toStationText').clear() driver.find_element_by_id('toStationText').send_keys('上海') # 选择乘车日期 js = "document.getElementById('train_date').removeAttribute('readonly')" driver.execute_script(js) driver.find_element_by_id('train_date').clear() driver.find_element_by_id('train_date').send_keys(date) ``` 6. 点击查询按钮,等待页面加载完成。 ```python # 点击查询按钮 driver.find_element_by_id('search_one').click() # 等待页面加载完成 time.sleep(10) ``` 7. 选择车次和座位类型,然后点击预订按钮。 ```python # 选择车次和座位类型 driver.find_element_by_xpath('//tbody/tr[1]/td[13]/a').click() time.sleep(2) driver.find_element_by_xpath('//ul[@id="normal_passenger_id"]/li[1]/label') driver.find_element_by_id('submitOrder_id').click() ``` 8. 点击确认按钮,等待页面加载完成。 ```python # 点击确认按钮 driver.find_element_by_id('qr_submit_id').click() # 等待页面加载完成 time.sleep(10) ``` 9. 最后,可以通过邮件或短信等方式通知自己是否抢到了车票。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值