Web爬网LXML和请求

时间:2018-10-21 03:37:17

标签: python python-3.x python-requests lxml python-3.7

我刚刚开始学习如何使用LXML和请求进行一些Web抓取。我想编写一个可以告诉我特定电影院正在播放什么电影的应用程序。

briantist's helpful answer

这是我的代码:

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)

但是,打印输出没有任何内容,据我了解,这意味着它找不到目录。

1 个答案:

答案 0 :(得分:0)

您不能将简单的请求解析库用于动态页面。

请注意,页面主要有两种类型,即:

  • 静态页面是易于阅读的纯文本,通常使用html,xml,json等格式。
  • 动态页面是其构造在异步请求下“即时”执行的页面。

在Google Chrome浏览器的开发人员工具>网络中,您可以查看针对构建网页的请求。

例如,que可以找到此链接:https://www.eventcinemas.com.au/Cinemas/GetSessions?cinemaIds=86。通常,当您要从网站查询某些信息时,有一种比解析(脏)html更为简单的方法。

但是,当除了阅读页面外没有其他选择时,您需要像任何浏览器一样模拟它。为此,有一些库作为硒Web驱动程序https://pypi.org/project/selenium/,尽管占用大量RAM和时间。