鱼C论坛

 找回密码
 立即注册
查看: 2886|回复: 3

关于Beautifulsoup的select查找的方法问题

[复制链接]
发表于 2017-7-17 14:21:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 gopythoner 于 2017-7-17 14:22 编辑

RT:
比如我在网页中通过检查复制了一个select语法的段落,下面这个是直接复制的
  1. #pagediv > table > tbody > tr:nth-child(2) > td:nth-child(1) > a
复制代码

可以看出,这个段落的tr标签是不止一个的,而这个段落位于第2个,之后的td也不止一个,它位于第1个
总之,可以从网页复制的select语句直接获取某个列表(就是上面说的tr和td不止一个的情况)中的子段落
但是用Beautifulsoup的select()方法就不行
直接复制上面的语法是会报错的,其实我很早就发现这个问题,但是并没有去深究
我之前做法(同样是匹配上面语句)是这样的
soup.select("#pagediv > table > tbody > tr")[1].select("td")[0].select("a")
看到了么,我是先得到列表,然后通过索引来获取单个的标签,然后继续select()直到找到最终的标签,一般需要1-3次

所以,问题来了
1,为什么beautifulsoup的select不能使用网页直接复制的?
2,我怎么修改从网页复制的语句可以直接一次性得到要的标签,而不是想我这种分步得到?
补充一点,貌似xpath语法也不能用直接复制的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-17 14:33:53 | 显示全部楼层
查到一个方法,不知道行不行,在公司没法测试
  1. #pagediv > table > tbody > tr:nth-of-type(2) > td:nth-of-type(1) > a
复制代码

结构还是一样的,似乎是表述上面有一点点区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 16:12:27 | 显示全部楼层

回帖奖励 +1 鱼币

帮你顶下帖子,一直没人回复你啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 18:49:10 | 显示全部楼层
问题1,不管是bs4还是xpath,直接从网页复制的语句在大型的网站大多数不能直接使用。
     不管是浏览器xpath插件的xpath helper还是bs4的插件inforlife,得到的解析式不一定能用

问题2,我平时用bs4直接索引的形式是(错的话,看着报错稍微调一下就好了)
       大多数都是靠肉眼直接看着源代码,手打bs4解析式
       不会去利用那些插件工具
  1. soup.select('#pagediv table tbody  tr')[2].td[1].a
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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