【问题标题】:soup.find_all works but soup.select doesn't worksoup.find_all 有效,但 soup.select 无效
【发布时间】:2017-12-13 12:08:47
【问题描述】:

我正在使用 css 选择器解析 html 页面

import requests
import webbrowser
from bs4 import BeautifulSoup

page = requests.get('http://www.marketwatch.com',  headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(page.content, 'html.parser')

在使用 select 方法时,我无法选择带有类的列表标记。但是,我在使用 find_all 方法时没有问题

soup.find_all('ul', class_= "latestNews j-scrollElement")

这会返回我想要的输出,但由于某种原因,我不能使用 CSS 选择器。我想知道我做错了什么。

这是我的尝试:

soup.select("ul .latestNews j-scrollElement")

返回一个空列表。

我无法弄清楚我在使用 select 方法时做错了什么。

谢谢。

【问题讨论】:

    标签: python beautifulsoup css-selectors


    【解决方案1】:

    来自documentation

    如果你想搜索匹配两个或多个 CSS 类的标签,你 应该使用 CSS 选择器:

    css_soup.select("p.strikeout.body")
    

    在你的情况下,你可以这样称呼它:

    In [1588]: soup.select("ul.latestNews.j-scrollElement")
    Out[1588]: 
    [<ul class="latestNews j-scrollElement" data-track-code="MW_Header_Latest News|MW_Header_Latest News_Facebook|MW_Header_Latest News_Twitter" data-track-query=".latestNews__headline a|a.icon--facebook|a.icon--twitter">
     .
     .
     .
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 2012-05-08
      • 2017-03-15
      • 2014-10-30
      • 2011-03-08
      • 2013-11-27
      • 2010-11-29
      • 2015-01-05
      相关资源
      最近更新 更多