【发布时间】: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)
我希望输出是一个包含元素的列表,但它返回的是一个空列表 []。
【问题讨论】:
-
在您正在加载的页面上,
<div id="showtimes">为空。 i.stack.imgur.com/uXaF6.png 不知道还能说什么。 -
@MrLister 这是我在检查页面时看到的:imgur.com/6DpDyil
-
网站使用 JavaScript 来填充 div,所以如果你只加载 HTML(不运行脚本),它不会被填充,你也看不到任何东西。
-
@MrLister 有没有一种方法可以让我在加载 HTML 时运行脚本以便访问该信息?
-
另外,谢谢。这回答了我为什么它不会出现在标签中的问题。
标签: python html web-scraping css-selectors