селектор ползет безрезультатно - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь сканировать фильм на сайте. Нет ошибки, но нет результата Там нет iframe. И я выбираю выбрать место через хром> F12> Копировать> Селектор копирования

Ссылка на сайт: CGV фильм

Элемент, который я выбираю

import requests
from bs4 import BeautifulSoup
import json
import os

## python file location
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

req = requests.get('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=')
html = req.text
soup = BeautifulSoup(html, 'html.parser')
movie_titles = soup.select(
    '#movie_list > ul > li > a > span.text'
    )

data = {}

for title in movie_titles:
    data = title.text + "\n"

with open(os.path.join(BASE_DIR, 'result.json'), 'w+') as json_file:
    json.dump(data, json_file)

1 Ответ

0 голосов
/ 16 марта 2019

Данные, которые вы хотите, загружаются динамически. Используйте такой метод, как селен, например

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

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='
driver = webdriver.Chrome()
driver.get(url)
data = [item.text for item in WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#movie_list > ul > li > a > span.text")))]
print(data)

Вы можете сократить селектор CSS до

#movie_list .text
...