Python - Объедините два списка из одного столбца в один список из двух столбцов и напечатайте - PullRequest
0 голосов
/ 07 февраля 2019

Я только начинаю баловаться с Python, и, как многие уже сделали, я начинаю с изучения веб-примера, чтобы попробовать язык.Я видел много примеров использования zip и map для объединения списков, но у меня возникают проблемы при попытке распечатать этот список.Опять же, я новичок, поэтому, пожалуйста, будьте осторожны.

Код собирает все из 2 определенных типов тегов (дата и заголовок сообщения) и возвращает их в виде 2 списков.Для этого я использую BeautifulSoup и запросы.Сайт, на котором я практикуюсь для этого теста, является блогом для небольшой игры под названием «Staxel» ​​

. Я могу получить свой код для печати полного списка одного тега, используя [soup.find] и [print] вцикл for, но когда я пытаюсь добавить второй список для печати, я просто получаю завершение без ошибки.Любые советы о том, как правильно распечатать 2 списка?

Я ищу вывод, как

Вступление 2019-01-06 Новый год

Запись 2018-11-30 Staxel Changelog для 1.3.52

# import libraries
import requests
import ssl
from bs4 import BeautifulSoup

# set the URL string
quote_page = 'https://blog.playstaxel.com'

# query the website and return the html to give us a 'page' variable
page = requests.get(quote_page)


# parse the html using beautiful soup and store in a variable ... 'soup'
soup = BeautifulSoup(page.content, 'lxml')

# Remove the 'div' of name and get it's value
title_box = soup.find_all('h1',attrs={'class':'entry-title'})
date_box = soup.find_all('span',attrs={'class':'entry-date published'})
titles = [title.text.strip() for title in title_box]
dates = [date.text.strip()for date in date_box]
date_list = zip(dates, titles)
for heading in date_list:
    print ("Entry {}")

1 Ответ

0 голосов
/ 07 февраля 2019

Проблема в том, что ваш запрос о дате возвращает пустой список, поэтому результат zip ped также будет пустым.Чтобы извлечь дату с этой страницы, вы хотите найти теги типа time, а не span, с классом entry-date published:

enter image description here

вот так:

date_box = soup.find_all("time", attrs={"class": "entry-date published"})

То есть со следующим кодом:

import requests
from bs4 import BeautifulSoup

quote_page = "https://blog.playstaxel.com"
page = requests.get(quote_page)
soup = BeautifulSoup(page.content, "lxml")

title_box = soup.find_all("h1", attrs={"class": "entry-title"})
date_box = soup.find_all("time", attrs={"class": "entry-date published"})
titles = [title.text.strip() for title in title_box]
dates = [date.text.strip() for date in date_box]

for date, title in zip(dates, titles):
    print(f"{date}: {title}")

Результат будет:

2019-01-10: Magic update – feature preview
2019-01-06: New Years
2018-11-30: Staxel Changelog for 1.3.52
2018-11-13: Staxel Changelog for 1.3.49
2018-10-21: Staxel Changelog for 1.3.48
2018-10-12: Halloween Update & GOG
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...