找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 164|回复: 9

[求助] 求助,解析html定位不到标签

7

主题

10

帖子

10

积分

贫民

积分
10
bigdog1984 发表于 2020-9-18 11:11:55 | 显示全部楼层 |阅读模式
想定位class为j_th_tit 的<a>标签,但是返回为空,是哪里写错了吗?万分感谢,代码和截图附上

from bs4 import BeautifulSoup
import urllib.request
from urllib.robotparser import RobotFileParser
from pyquery import PyQuery as pq
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

html = '''
"<a rel="noreferrer" href="/p/6077550005" title="这一次" target="_blank" class="j_th_tit ">这一次</a>"
'''
bs = BeautifulSoup(html,"html.parser")
get_href_list = bs.find_all("a",class_="j_th_tit ")
print(get_href_list)
360截图20200918102411798.jpg

360截图20200918102411798.jpg
回复

使用道具 举报

0

主题

724

帖子

724

积分

圣骑士

积分
724
sheeboard 发表于 2020-9-18 16:03:02 | 显示全部楼层
是要这个吗?
Screenshot from 2020-09-18 16-02-19.png
回复 支持 反对

使用道具 举报

26

主题

84

帖子

84

积分

新手

积分
84
银发的index 发表于 2020-9-18 18:30:41 | 显示全部楼层
class多个_
回复 支持 反对

使用道具 举报

0

主题

724

帖子

724

积分

圣骑士

积分
724
sheeboard 发表于 2020-9-18 19:23:37 | 显示全部楼层
本帖最后由 sheeboard 于 2020-9-18 19:27 编辑

beauifulsoup里的class是可以这么写的。书里的例子。
Screenshot from 2020-09-18 19-26-22.png
回复 支持 反对

使用道具 举报

0

主题

5

帖子

5

积分

贫民

积分
5
wodewan 发表于 2020-9-19 17:57:12 | 显示全部楼层
class是个多值属性,把get_href_list = bs.find_all("a",class_="j_th_tit "),二参中的"j_th_tit "最后面的空格删掉,
用bs.a['class']查看一下,不管你的html中有没空格也不管多少个,是不是返回值是没有空格的。
回复 支持 反对

使用道具 举报

0

主题

724

帖子

724

积分

圣骑士

积分
724
sheeboard 发表于 2020-9-19 20:14:34 | 显示全部楼层
class_其实是为了和系统保留字class区别。特指css class。
回复 支持 反对

使用道具 举报

7

主题

10

帖子

10

积分

贫民

积分
10
bigdog1984  楼主| 发表于 2020-9-21 15:29:42 | 显示全部楼层

您这个报错的,因为返回的是空列表,所以不能利用索引了
回复 支持 反对

使用道具 举报

7

主题

10

帖子

10

积分

贫民

积分
10
bigdog1984  楼主| 发表于 2020-9-21 15:39:01 | 显示全部楼层
wodewan 发表于 2020-9-19 17:57
class是个多值属性,把get_href_list = bs.find_all("a",class_="j_th_tit "),二参中的"j_th_tit "最后面 ...

您好,空格删掉是可以的,但是源码中的类名明明有空格的,我是完全复制过来的,难道空格不算类名吗?
回复 支持 反对

使用道具 举报

0

主题

5

帖子

5

积分

贫民

积分
5
wodewan 发表于 2020-9-22 09:40:36 | 显示全部楼层
bigdog1984 发表于 2020-9-21 15:39
您好,空格删掉是可以的,但是源码中的类名明明有空格的,我是完全复制过来的,难道空格不算类名吗? ...

你把源数据中的class换成这样,class="j_th_tit       this is a sample ",同样提取class,而且使用findall时字符中的任意一个被空格分开的字符都可以作为参数。然后bs.a['class']看看,结果是不是一个list  ['j_th_tit', 'this', 'is', 'a', 'sample'];即使class中只有一个值,如你原先的例子,得到的结果也是一个list ['j_th_tit'],说明空格在class中是个分隔符。

但如果你把target换成这样target="_blank  this is a sample",这个时候空格就不是分隔符了,这时使用findall时就必须整个字符串作为参数,不然就找不到,然后提取的target是不是bs.a['target']结果是不是一个字符串,'_blank  this is a sample'

一个list,一个string,所以,class是个多值属性,可以看成一个list,空格是它的分隔符,好了编不下去了,就这些了,哈哈。。。。
回复 支持 反对

使用道具 举报

7

主题

10

帖子

10

积分

贫民

积分
10
bigdog1984  楼主| 发表于 2020-9-22 10:22:48 | 显示全部楼层
wodewan 发表于 2020-9-22 09:40
你把源数据中的class换成这样,class="j_th_tit       this is a sample ",同样提取class,而且使用find ...

谢谢兄弟详细解答,学到了
回复 支持 反对

使用道具 举报

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

本版积分规则

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