【发布时间】:2017-03-02 23:23:48
【问题描述】:
假设我们有这样的 HTML(抱歉,我不知道如何复制和粘贴页面信息,而且这是在 Intranet 上):
我想获得所有问题的突出显示部分(这就像 Stack Overflow 页面)。 编辑:更清楚地说,我感兴趣的是获得一个列表:
['question-summary-39968',
'question-summary-40219',
'question-summary-42899',
'question-summary-34348',
'question-summary-32497',
'question-summary-35308',
...]
现在我知道一个可行的解决方案是我可以做的列表理解:
[item["id"] for item in html_df.find_all(class_="question-summary")]
但这并不是我想要的。第一项如何直接访问question-summary-41823?
另外,soup.select 和 soup.get 有什么区别?
【问题讨论】:
-
在目前的形式中,不清楚您要选择什么。
soup.select()与CSS选择器完美配合。所有.question-summary和id=>soup.select(".question-summary[id]") -
这个列表理解怎么不是你想要的?结果是否需要以不同的方式排序?
-
不,列表理解为我提供了一个适合我的目的的列表。我只是想更好地理解 BeautifulSoup 以及如何直接访问像
question-summary-41823这样的东西。这不可能吗? -
不确定还有什么比这更直接的吗?你得到元素并得到它的属性。
html_df.find(class_="question-summary")["id"]如果你只想要第一个。 -
是的,但这只会给我第一个。如果我想要所有这些怎么办?我是否必须做一些类似于我的列表理解的事情?
标签: python css beautifulsoup