Как распечатать переменную функции в HTML в Python? - PullRequest
0 голосов
/ 29 декабря 2018

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

OS = Windows, Python3.

from bs4 import BeautifulSoup
import requests
import datetime
import os
import webbrowser

carf_meySayf = requests.get('https://www.carrefoursa.com/tr/tr/meyve/c/1015?show=All').text
carf_soup = BeautifulSoup(carf_meySayf, 'lxml')

#spans
carf_name_span = carf_soup.find_all('span', {'class' : 'item-name'})
carf_price_span = carf_soup.find_all('span', {'class' : 'item-price'})


#spans to list
carf_name_list = [span.get_text() for span in carf_name_span]
carf_price_list = [span.get_text() for span in carf_price_span]

#combine lists
carf_mey_all = [carf_name_list +' = ' + carf_price_list for carf_name_list, carf_price_list in zip(carf_name_list, carf_price_list)]



#Function to choose and print special product

def test(namelist,product):
    for i in namelist:
        if product in i:
            print(i)


a = test(carf_mey_all,'Muz')


# Date
date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# HTML part
html_str = """
<html>
    <title>Listeler</title>
        <h2>Tarih: %s</h2>
        <h3>Product & Shop List</h3>
            <table style="width:100%%">
                <tr>
                    <th>Carrefour</th>
                </tr>
                <tr>
                 %s
                </tr>
</html>
""" 

whole = html_str %(date,a)


Html_file= open("Meyve.html","w")
Html_file.write(whole)
Html_file.close()

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

метод test() должен иметь значение return, например

def test(namelist,product):
    results = ''
    for i in namelist:
        if product in i:
            print(i)
            results += '<td>%s</td>\n' % i
    return results

Meyve.html результаты:

<html>
<title>Listeler</title>
<h2>Tarih: 2018-12-29 07:34:00</h2>
<h3>Product & Shop List</h3>
<table style="width:100%">
  <tr>
    <th>Carrefour</th>
  </tr>
  <tr>
    <td>Muz = 6,99 TL</td>
    <td>İthal Muz = 12,90 TL</td>
    <td>Paket Yerli Muz = 9,99 TL</td>
  </tr>

</html>

примечание: чтобы быть действительным html, вам нужно добавить<body></body>

0 голосов
/ 29 декабря 2018

Проблема в том, что ваша функция test() явно не возвращает ничего, поэтому она неявно возвращает None.
Чтобы исправить это, test() должен накапливать текст, который он хочет вернуть (т.е.строит список или строку) и возвращает строку, содержащую текст, который вы хотите вставить в html_str.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...