首先,如果你看一下我的帖子,我想感谢你。我发现了许多关于如何使用BS4阅读下一个元素的帖子,但它涉及关键字相关的问题。
这是我的问题:我尝试从txt.files中删除数据,并且构建HTML的方式对于不同的变量具有类似的环境。
例如,这里是我要提取的变量之一:
(不要注意编码/解码部分)
number= bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')[0].get_text().encode('ascii', 'ignore').decode(
'ascii')
它运行良好,但现在我要提取的下一个变量出现在数字之后出现完全相同的html构建。所以当我跑
时Local= bs.find_all('span', class_=''span', class_='grid_1 prefix_1 suffix_1 data')[0].get_text().encode('ascii', 'ignore').decode(
'ascii')
number= bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')[0].get_text().encode('ascii', 'ignore').decode(
'ascii')
它为我提供了两个变量的相同信息。我知道BS4在第一次遇到findall中插入的元素时会停止。
阅读Beautiful Soup文档后,我尝试使用find_next命令获取与第二个元素对应的数据。 我跑的时候:
Local= bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')[0].find_all_next().encode('ascii', 'ignore').decode(
'ascii')
我收到以下Python错误: AttributeError:'ResultSet'对象没有属性
当我尝试单独运行find_next命令时如下:
Local= bs.find_next('span', class_='grid_1 prefix_1 suffix_1 data')[0].encode('ascii', 'ignore').decode(
'ascii')
我收到以下Python错误: TypeError:'NoneType'对象没有属性'__getitem __'
我的问题是“如何正确地将find_next命令应用于find_all?”
答案 0 :(得分:0)
find_all()
函数会返回与您的span
参数匹配的所有class
代码:class_='grid_1 prefix_1 suffix_1 data'
因此,没有“下一个”元素可供查找。你已经拥有它了。
尝试循环find_all()
的结果:
spans = bs.find_all('span', class_='grid_1 prefix_1 suffix_1 data')
for span in spans:
sub_text = re.sub(r'[\ \n\r]{2,}', '', span.get_text())