BeautifulSoup find_all 方法不能概括

问题描述

我对 BeautifulSoup 的问题有点困惑。这段代码是我试图调试的一个函数的片段。刮刀工作正常,突然停了下来。奇怪的是,我正在搜索“ipsColumn ipsColumn_fluid”的类在循环的第二步生成的“post_soup”文件中。

作为调试的一部分,我想看看产生了什么,这就是文本文件的原因。然而,它是空的。我不知道为什么。

有什么想法吗?

post_pages = ['https://coffeeforums.co.uk/topic/4843-a-little-thank-you/','https://coffeeforums.co.uk/topic/58690-for-sale-area-rules-changes-important/']

for topic_url in post_pages:
    post_page = urlopen(topic_url)
    post_soup = BeautifulSoup(post_page,'lxml')
    messy_posts = post_soup.find_all('div',class_='ipsColumn ipsColumn_fluid')
    with open('messy_posts.txt','w') as f:
        f.write(str(messy_posts))

编辑:您可以交换此变量以查看它应该如何工作。这些网站建立在同一个平台上,所以抓取应该是相同的(我认为):

post_pages = ['https://forum.cardealermagazine.co.uk/topic/8603-customer-comms-and-the-virus/','https://forum.cardealermagazine.co.uk/topic/10096-volvo-issue-heads-up/']

解决方法

class_ 接受多个类的列表,而不是 OR 操作的字符串。你可以改变它

 class_='ipsColumn ipsColumn_fluid'

到此为止,它应该可以工作。

class_=['ipsColumn','ipsColumn_fluid']

它应该可以工作。

或者,如果您要使用 AND(您想要一个包含两个类的 div)。我建议您像这样使用 select

post_soup.select('div.ipsColumn.ipsColumn_fluid')

这将返回包含两个类的 div

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...