问题描述
我对 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