我刚刚开始学习如何使用LXML和请求进行一些Web抓取。我想编写一个可以告诉我特定电影院正在播放什么电影的应用程序。
这是我的代码:
import requests
from lxml import html
# Getting the Page
HTML = requests.get('https://www.eventcinemas.com.au/Sessions#cinemas=86')
doc = html.fromstring(HTML.content)
# Getting the Movie
path1 = doc.xpath('//div[@class="body-content"]')[0]
path2 = path1.xpath('.//div[@class="content"]')[0]
path3 = path2.xpath('.//div[@id="first-dates"]')[0]
path4 = path3.xpath('.//div[@class="split-content"]')[0]
path5 = path4.xpath('.//div[@id="session-list"]')[0]
我一直在试图一路走到电影标题上。 我觉得这与课程有关,但不确定:
<div class="movie-container list-view"...
我也尝试过这样做,但是它没有任何价值:
path6 = path5.xpath('.//div[@class="movie-container list-view"]')
print(path6)
但是,打印输出没有任何内容,据我了解,这意味着它找不到目录。
答案 0 :(得分:0)
您不能将简单的请求解析库用于动态页面。
请注意,页面主要有两种类型,即:
在Google Chrome浏览器的开发人员工具>网络中,您可以查看针对构建网页的请求。
例如,que可以找到此链接:https://www.eventcinemas.com.au/Cinemas/GetSessions?cinemaIds=86。通常,当您要从网站查询某些信息时,有一种比解析(脏)html更为简单的方法。
但是,当除了阅读页面外没有其他选择时,您需要像任何浏览器一样模拟它。为此,有一些库作为硒Web驱动程序https://pypi.org/project/selenium/,尽管占用大量RAM和时间。