Не удается получить выходные данные с настраиваемой формы с веб-страницы - PullRequest
0 голосов
/ 21 октября 2018

Я написал скрипт на python в сочетании с BeautiflSoup, используя селектор для анализа названий фильмов и соответствующих им функций на веб-странице.Когда я выполняю свой скрипт, он частично выбирает нужные элементы.Как я могу получить все названия фильмов и их особенности?

Я пытался так:

import requests
from bs4 import BeautifulSoup
from itertools import zip_longest

with requests.Session() as session:
    r = session.get('https://yts.am/browse-movies')
    soup = BeautifulSoup(r.text,"lxml")
    items = {item.text:itm.text for item,itm in zip(soup.select(".browse-movie-title"),soup.select("figcaption h4"))}
    print(items)

Результаты, которые я получаю как:

{'Halloween H20: 20 Years Later': '5.7 / 10', 'Rabbit': 'Horror', and so on-----

Полагаю, это из-за функции zip().Тем не менее, я импортировал zip_longest(), который мог бы добиться цели, но я не смог его использовать.

Элементы HTML, внутри которых одна из таких функций одного фильма:

<figcaption class="hidden-xs hidden-sm">
<span class="icon-star"></span>
<h4 class="rating">5.7 / 10</h4>
<h4>Horror</h4>
<h4>Thriller</h4>
<span class="button-green-download2-big">View Details</span>
</figcaption>

Это соответствующий HTML-код для одного фильма:

<div class="browse-movie-bottom">
<a href="https://yts.am/movie/halloween-h20-20-years-later-1998" class="browse-movie-title">Halloween H20: 20 Years Later</a>
<div class="browse-movie-year">1998</div>
</div>

Ожидаемый вывод для одного фильма:

'Halloween H20: 20 Years Later': ['5.7 / 10','Horror','Thriller']

1 Ответ

0 голосов
/ 21 октября 2018

Вы выбираете все элементы одновременно.Это может быть трудно для группы.Также zip это не то, что вы ищете.Просто перебирайте карты.

import requests
from bs4 import BeautifulSoup

with requests.Session() as session:
    r = session.get('https://yts.am/browse-movies')
    soup = BeautifulSoup(r.text,"lxml")  

    for movie in soup.select("div.browse-movie-wrap"):
        title = movie.select_one('a.browse-movie-title').text
        details = [detail.text for detail in movie.select('h4')]
        print((title, details))

Вывод будет,

('Heavy Weights', ['6.7 / 10', 'Comedy', 'Drama'])
('Get Shorty', ['6.9 / 10', 'Comedy', 'Crime'])
('Fred Claus', ['5.6 / 10', 'Comedy', 'Family'])
("Free Willy: Escape from Pirate's Cove", ['5.2 / 10'])
('Halloween: Resurrection', ['4.1 / 10', 'Comedy', 'Horror'])
('Ant-Man and the Wasp', ['7.2 / 10', 'Action', 'Adventure'])
('Rabbit', ['6.2 / 10', 'Thriller'])
('Halloween H20: 20 Years Later', ['5.7 / 10', 'Horror', 'Thriller'])
("Madeline's Madeline", ['6.9 / 10'])
('Halloween 5', ['5.2 / 10'])
('Halloween: The Curse of Michael Myers', ['4.9 / 10', 'Action', 'Horror'])
('Deck the Halls', ['4.9 / 10', 'Comedy', 'Family'])
('Halloween 4: The Return of Michael Myers', ['5.9 / 10', 'Horror', 'Thriller'])
('Dark Horse', ['6 / 10', 'Action', 'Comedy'])
('Double Whammy', ['5.7 / 10', 'Comedy', 'Crime'])
('Beyond Borders', ['6.5 / 10', 'Adventure', 'Drama'])
('Dead Man Running', ['6 / 10', 'Action', 'Crime'])
('Cougar Hunting', ['3.7 / 10', 'Comedy', 'Romance'])
('Cabin Boy', ['5.2 / 10', 'Adventure', 'Comedy'])
('Illang: The Wolf Brigade', ['5.5 / 10', 'Action', 'Sci-Fi'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...