Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用BeautifulSoup跳过某些标记?_Python_Loops_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 如何使用BeautifulSoup跳过某些标记?

Python 如何使用BeautifulSoup跳过某些标记?,python,loops,web-scraping,beautifulsoup,Python,Loops,Web Scraping,Beautifulsoup,我是Python的初学者,目前正在尝试使用BeautifulSoup编写一个简单的脚本,从网页中提取一些信息并将其写入CSV文件。我想做的是浏览网页上的所有列表。在我要使用的特定HTML文件中,只有一个“ul”有id,我希望跳过该文件,并将所有其他列表元素保存在一个数组中。我的代码不起作用,我不知道如何解决我的问题 for ul in content_container.findAll('ul'): if 'id' in ul: continue else:

我是Python的初学者,目前正在尝试使用BeautifulSoup编写一个简单的脚本,从网页中提取一些信息并将其写入CSV文件。我想做的是浏览网页上的所有列表。在我要使用的特定HTML文件中,只有一个“ul”有id,我希望跳过该文件,并将所有其他列表元素保存在一个数组中。我的代码不起作用,我不知道如何解决我的问题

for ul in content_container.findAll('ul'):
    if 'id' in ul:
        continue
    else:
        for li in ul.findAll('li'):
            list.append(li.text)
            print(li.text)
在这里,当我打印列表时,我仍然可以看到ul中带有id的元素。我知道这是一个简单的问题,但我现在被卡住了。任何帮助都将不胜感激

试试这个

   all_uls = content_container.find_all('ul')
    #assuming that the ul with id is the first ul 
    for i in range(1, len(all_uls)):
              print(all_uls[i])

您正在查找
id=False
。使用以下命令:

for ul in content_container.find_all('ul', id=False):
    for li in ul.find_all('li'):
        list.append(li.text)
        print(li.text)

这将忽略将
id
作为属性的所有标记。而且,你的方法几乎是正确的。您只需要检查标签属性中是否存在
id
,而不是标签本身(正如您所做的那样)。因此,在ul.attrs()中使用
if'id',而不是在ul中使用
if'id

OP从未提到过,具有id的ul是第一个ul。所以,如果你不这样假设就更好了。如果是这样的话,简单的切片就可以了
all\u uls=content\u container.find\u all('ul')[1://code>