snowJR 发表于 2020-11-19 21:31:34

做爬虫遇到关于标签为class的问题

网上很多教程说在class改为class_就能正常运行,但是为什么改为class_之后就找不到class标签了然后报错?

snowJR 发表于 2020-11-19 21:32:17

程序用的pycharm在跑

Twilight6 发表于 2020-11-19 21:40:03



看下你的代码,class 改成 class_ 是指匹配的数据,不是指变量哈

snowJR 发表于 2020-11-19 22:28:12

Twilight6 发表于 2020-11-19 21:40
看下你的代码,class 改成 class_ 是指匹配的数据,不是指变量哈

代码截图如下,这样写可以吗?

Twilight6 发表于 2020-11-19 22:38:59

snowJR 发表于 2020-11-19 22:28
代码截图如下,这样写可以吗?

发下你的报错内容

snowJR 发表于 2020-11-19 23:05:18

Twilight6 发表于 2020-11-19 22:38
发下你的报错内容

AttributeError: 'NoneType' object has no attribute 'get_text'

Twilight6 发表于 2020-11-19 23:20:46

snowJR 发表于 2020-11-19 23:05
AttributeError: 'NoneType' object has no attribute 'get_text'



数据提取出错了,find 没提取到数据返回 None ,而 None 没有属性 get_text 方法导致报错

你调式看看,应该是数据提取的问题,先打印完整的 html ,然后你ctrl+f 查找下你 class 的关键字

看下你爬取的源码是否有把你需要的数据爬下来,如果没有那么肯定是find 找不到的,返回 None 了

snowJR 发表于 2020-11-20 07:58:44

Twilight6 发表于 2020-11-19 23:20
数据提取出错了,find 没提取到数据返回 None ,而 None 没有属性 get_text 方法导致报错

你调式 ...

源码里是有我要的class标签数据的,改成class_之后就提取不到了

suchocolate 发表于 2020-11-20 09:07:29

snowJR 发表于 2020-11-20 07:58
源码里是有我要的class标签数据的,改成class_之后就提取不到了

发文本代码用<>

Twilight6 发表于 2020-11-20 11:22:05

snowJR 发表于 2020-11-20 07:58
源码里是有我要的class标签数据的,改成class_之后就提取不到了


你爬取到的源码可能还有不可见字符比如 \ 导致你数据匹配错误

class_ 是没错的,因为如果用class 会和 Python 类定义关键字冲突

snowJR 发表于 2020-11-20 13:04:50

Twilight6 发表于 2020-11-20 11:22
你爬取到的源码可能还有不可见字符比如 \ 导致你数据匹配错误

class_ 是没错的,因为如果用class 会 ...

我打印了源码发现用浏览器审查看到的是class标签,但是在pycharm打印出来是mxpath标签是怎么回事?

suchocolate 发表于 2020-11-20 13:09:20

snowJR 发表于 2020-11-20 13:04
我打印了源码发现用浏览器审查看到的是class标签,但是在pycharm打印出来是mxpath标签是怎么回事?

发代码,空口不凭。
soup是为了区分class字段所以用了class_。
浏览器是加载过js的,和requests.get不同很正常。

snowJR 发表于 2020-11-20 13:20:31

Target_name = input('请输入源名称:')
url = 'https://ned.ipac.caltech.edu/byname?objname={0}'.format(Target_name)
res = requests.get(url=url,headers=headers)
soup = bs4.BeautifulSoup(res.text,features="html.parser")
Try = soup.find('span',mxpath='NED_QLPhotometryDataTable.qlphot_col3')
fin = Try.get_text()
print(soup)
print(Try)

现在我改用span标签就可以正常提取了

suchocolate 发表于 2020-11-20 13:51:47

snowJR 发表于 2020-11-20 13:20
Target_name = input('请输入源名称:')
url = 'https://ned.ipac.caltech.edu/byname?objname={0}'.forma ...

这是让我们猜url吗?

snowJR 发表于 2020-11-20 15:18:14

suchocolate 发表于 2020-11-20 13:51
这是让我们猜url吗?

这里输入的是PKS%200002%2D478

suchocolate 发表于 2020-11-20 18:20:38

snowJR 发表于 2020-11-20 15:18
这里输入的是PKS%200002%2D478

看网页码源没有public_fixedDataTableCell_cellContent这个class。
你想爬网页中的什么资源?我看这个网页好多数据都是用ajax拿的。
页: [1]
查看完整版本: 做爬虫遇到关于标签为class的问题