Div Class Text不保存

时间:2018-03-20 15:22:02

标签: python python-3.x web-scraping beautifulsoup

我正在努力收集Vudu电影的价格。但是,当我尝试从相关的div容器中提取数据时,它返回为空。

from bs4 import BeautifulSoup
url = "https://www.vudu.com/content/movies/details/title/835625"
response = get(url)
html_soup = BeautifulSoup(response.text, 'html.parser')
type(html_soup)
price_container = html_soup.find_all('div', class_ = 'row nr-p-0 nr-mb-10')

结果:

In [43]: price_container
Out[43]: []

正如您在此处所见,价格信息包含在我指定的div类中:

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您查看页面来源,<body>包含以下HTML:

<div id="loadingScreen">
    <div class="loadingScreenViewport">
        <div class="loadingScreenBody">
            <div id="loadingIconClock">
                <div class="loadingIconBox">
                    <div></div><div></div>
                    <div></div><div></div>
                </div>
            </div>
        </div>
    </div>
</div>  

其他所有内容都是<script>标记(JavaScript)。该网站主要受JavaScript驱动。也就是说,所有其他内容都是动态添加的。

正如您所看到的,页面源中没有div标记class="row nr-p-0 nr-mb-10"(这是requests.get(...)返回的内容)。这就是为什么,price_container是一个空列表。

您需要使用其他工具(例如Selenium)来抓取此页面。

答案 1 :(得分:0)

感谢您提示使用Selenium。我能够通过以下代码获取价格信息。

 <!-- start date -->
  <mat-form-field *ngIf="true">
    <input matInput [matDatepicker]="picker1" placeholder="Choose a date" [formControl]="startDate">
    <mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
    <mat-datepicker #picker1></mat-datepicker>
  </mat-form-field>

  <!-- end date -->
  <mat-form-field *ngIf="true">
    <input matInput [matDatepicker]="picker2" placeholder="Choose a date" [formControl]="endDate">
    <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
    <mat-datepicker #picker2></mat-datepicker>
  </mat-form-field>