Python 使用BeautifulSoup找不到特定的类组件

Python 使用BeautifulSoup找不到特定的类组件,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正试图为一家电影院网站制作一个刮板,以收集电影名称列表。 我尝试使用BeautifulSoup来解析HTML文件,我看到每个电影都在一个名为“movie row”的类中。但是在这个类上使用select方法并没有检索到站点的相应数据。我能得到的HTML中最接近的组件是.quickbook section的父类 为什么有些HTML标记可以使用BS,而另一些则不能 这就是我写的代码 def get_movies_names(): url = "https://www.yesplanet.co

我正试图为一家电影院网站制作一个刮板,以收集电影名称列表。 我尝试使用BeautifulSoup来解析HTML文件,我看到每个电影都在一个名为
“movie row”
的类中。但是在这个类上使用
select
方法并没有检索到站点的相应数据。我能得到的HTML中最接近的组件是
.quickbook section
的父类

为什么有些HTML标记可以使用BS,而另一些则不能

这就是我写的代码

def get_movies_names():
    url = "https://www.yesplanet.co.il/#/buy-tickets-by-cinema?in-cinema=1025&at=2018-11-09&view-mode=list"
    raw_html = util.simple_get(url)
    bs = BeautifulSoup(raw_html, 'html.parser')
    bs.select(".movie-row")

simple\u get
只是一个返回HTML响应内容的函数)

似乎特定网站正在使用JavaScript呈现其电影数据

Beauty soup不是浏览器,因此它没有DOM,因此无法运行JavaScript代码。它所做的只是获取页面内容并对其进行解析。如果查看相关页面的源代码并查看源代码(在大多数浏览器中,右键单击“查看源代码”),然后搜索
。电影行
,您将发现没有匹配项


在这种情况下,您必须找到一种替代方法来抓取数据,尝试研究它使用的JavaScript代码的功能,并从中着手。或者,您可能想看看如何使用Selenium和PhantomJS。

正如一些人所指出的,它是通过javascript加载的,而BS4实际上无法使用它。当您看到通过javascript加载的数据时,您可以肯定在某个地方有一个API调用。您可以查看它是否在调用JSON对象,以及您是否可以在不使用任何apikey的情况下访问JSON对象,而不是试图刮取数据

如果您需要一些不同的东西,您可能需要调整一些URL模式

import requests, json
# Ignore the insecure warning
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

url = "https://www.yesplanet.co.il/il/data-api-service/v1/poster/10100/by-showing-type/SHOWING?lang=he_IL&ordering=desc"

# Get the page
response = requests.get(url, verify=False)

# Load into json
j = json.loads(response.text)

# process what you want
for poster in j['body']['posters']:
    print(poster['url'], poster['featureTitle'])
脚本的输出如下所示:

/films/bohemian-rhapsody רפסודיה בוהמית
/films/the-other-story סיפור אחר
/films/the-girl-in-the-spiders-web הנערה ברשת העכביש
/films/the-nutcracker-and-the-four-realms מפצח האגוזים  וארבע הממלכות
/films/911 11 בספטמבר
/films/virgins אין בתולות בקריות
每个海报的可用属性包括
属性
代码
日期开始
功能标题
媒体列表
帖子
网址
,以及
权重


如果你想知道我是如何发现这个URL的,我使用chrome开发者控制台重新加载了这个页面。在XHR(XMLHttpRequest)上进行筛选,您将看到包含数据的URL。

BS无法处理JavaScript,您可能会遇到此问题,其中一些站点是通过JavaScript加载的