【问题标题】:Having trouble finding certain <div> tags using CSS Selectors使用 CSS 选择器查找某些 <div> 标记时遇到问题
【发布时间】:2019-01-23 11:39:16
【问题描述】:

我正在尝试使用 CSS 选择器从网站上抓取信息以获取特定的文本元素,但遇到了问题。我尝试搜索我想要的网站部分,但我的程序告诉我它不存在。我的程序返回一个空列表。

我正在使用 requests 和 lxml 库,并且正在使用 CSS 选择器来执行我的 HTML 抓取。我有 Python 3.7。我尝试使用选择器搜索我需要的网站部分,但它没有出现。我也尝试过使用 XPath,但也失败了。我尝试使用以下选择器:

div#showtimes 

当我使用这个选择器时,我得到以下结果:

[<Element div at 0x3bf6f60>]

我得到了预期的结果,这是所需的元素。当我尝试更进一步并访问嵌套在 div#showtimes 元素内的元素时(见下文),我得到一个空列表。

div#showtimes div

我得到以下结果:

[]

通过检查网站的 HTML,我知道 div#showtimes 元素中有一个嵌套元素。这个问题也出现在其他网页上。我正在使用下面的代码。

import requests
from lxml import html
from lxml.cssselect import CSSSelector

# Set URL
url = "http://www.fridleytheatres.com/location/7425/Paramount-7-Theatres- 
Showtimes"

# Get HTML from page
page = requests.get(url)
data = html.fromstring(page.text)

# Set up CSSSelector
sel = CSSSelector('div#showtimes div')
# Apply Selector
results = sel(data)
print(results)

我希望输出是一个包含元素的列表,但它返回的是一个空列表 []。

【问题讨论】:

  • 在您正在加载的页面上,&lt;div id="showtimes"&gt; 为空。 i.stack.imgur.com/uXaF6.png 不知道还能说什么。
  • @MrLister 这是我在检查页面时看到的:imgur.com/6DpDyil
  • 网站使用 JavaScript 来填充 div,所以如果你只加载 HTML(不运行脚本),它不会被填充,你也看不到任何东西。
  • @MrLister 有没有一种方法可以让我在加载 HTML 时运行脚本以便访问该信息?
  • 另外,谢谢。这回答了我为什么它不会出现在
    标签中的问题。

标签: python html web-scraping css-selectors


【解决方案1】:

如果我正确理解了这个问题,您正在尝试获取一个 div 元素,它是 div#showtimes 的子元素。尝试使用div#showtimes &gt; div

【讨论】:

  • 使用 CSSSelector,不需要“>”。我可以立即在前面的 div 标签后面加上另一个 div 标签,如下所示: div div (这是我的理解,并且在除此之外的所有其他情况下都适用于我)
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多