如何获取包含不能通过request.get获得的标签的数据?

时间:2019-04-12 03:30:55

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

我想从下面的主页获得我想要的信息。

http://ticket.cgv.co.kr/Reservation/Reservation.aspx?MOVIE_CD=&MOVIE_CD_GROUP=&PLAY_YMD=&THEATER_CD=&PLAY_NUM=&PLAY_START_TM=&AREA_CD=&SCREEN_CD=&THIRD_ITEM=#

确切地说,我想获取电影列表nano has-scrollbar-y中li标签的所有信息

<div class="movie-select">
   <div class="movie-list nano has-scrollbar-y" id="movie_list">
      <li class="rating-15" data-index="0" movie_cd_group="20018753" movie_idx="81626">
          *************************
          **the data that i want!**
          *************************

      <li class="rating-15" data-index="1" movie_cd_group="20018753" movie_idx="81626">
          *************************
          **the data that i want!**
          *************************
...
...

      <li class="rating-15" data-index="100" movie_cd_group="20018753" movie_idx="81626">
          *************************
          **the data that i want!**
          *************************

但是,当我使用下面的代码来爬网此主页上的所有信息时。我无法在特定标签(div类“列表-列表”)中获取数据。

url = 'http://ticket.cgv.co.kr/Reservation/Reservation.aspx?MOVIE_CD=&MOVIE_CD_GROUP=&PLAY_YMD=&THEATER_CD=&PLAY_NUM=&PLAY_START_TM=&AREA_CD=&SCREEN_CD=&THIRD_ITEM=#'
r = requests.get(url)
soup = BeautifulSoup(r.text)

当我检查从request.get获得的 html页面文字时, 没有数据 喜欢

</div>
<div class="movie-list nano has-scrollbar-y"  id="movie_list">
<ul class="content scroll-y" onscroll="movieSectionScrollEvent();"></ul>
</div>

但是当我检查chrome时,所有信息都在这里!

<div class="movie-list nano has-scrollbar-y" id="movie_list">
 <ul class="content scroll-y" onscroll="movieSectionScrollEvent();"         tabindex="-1">
  <li class="rating-15" data-index="0" movie_cd_group="20018753" movie_idx="81626">
   <a href="#" onclick="return false;">
   <span class="icon">&nbsp;</span>
   <span class="text">바이스</span><span class="sreader"></span></a></li> 

  <li class="rating-15" data-index="1" movie_cd_group="20019110" movie_idx="81721">
   <a href="#" onclick="return false;">
   <span class="icon">&nbsp;</span><span class="text">미성년</

   ...

这是我的问题。

如何从this homepage获取所有数据?

2 个答案:

答案 0 :(得分:2)

数据通过javascript加载。

1)要么使用类似硒的方法,要么允许这种渲染在尝试访问之前进行

2)使用开发工具并检查此http://ticket.cgv.co.kr/CGV2011/RIA/CJ000.aspx/CJ_HP_SCHEDULE_TOTAL_DEFAULT的POST XHR,看看它是否提供了您想要的信息,并且可以用requests复制

答案 1 :(得分:1)

您的问题是onclick事件。您需要先与该页面上的javascript交互,然后才能解析漂亮的汤。请参阅先前的答案https://stackoverflow.com/a/29385645/10981724