Исправить синтаксическую ошибку в понимании списка, содержащего красивые методы супа - PullRequest
0 голосов
/ 31 декабря 2018

Я очень старался, но всегда есть какая-то синтаксическая ошибка с фрагментом кода, который следует.

import urllib.request
import re
import csv
from bs4 import BeautifulSoup
from bs4 import NavigableString
from unicodedata import normalize
url = input('Please paste the link here: ')
html = urllib.request.urlretrieve(url)
html_file = open(html[0])
soup = BeautifulSoup(html_file, 'html5lib')
def contains_href(tag):
    return tag.find('a', href=True)
scrollables = [table in soup.find_all('table', class_='sc_courselist') if contains_href(table)]
def num_name_unit(tag):
    td_num = tag.find('td', href=True)
    num = normalize('NFKD', td_num.string.strip())
    td_name = tag.find('td', class_=False)
    name = normalize('NFKD', td_name.string.strip())
    td_unit = tag.find('td', class_='hourscol')
    unit = normalize('NFKD', td_unit.string.strip())
    row = ['Course Number: {0} | Course Name: {1} | Course Unit: {2}'.format(num, name, unit)]
    return row
dic_rows = {scrollable.find_previous_siblings(re.compile('h'), class_=False, limit=1).string.strip(): list(num_name_unit(tr) for tr in scrollable.find_all('tr', contains_href)) for scrollable in scrollables}

Я ожидаю, что терминал напечатает следующий запрос: «Пожалуйста, вставьте ссылку сюда:».На самом деле, он говорит «недопустимый синтаксис» в конце scrollables = [table in soup.find_all ('table', class _ = 'sc_courselist'), если содержит_href (table)].

введите изображениеописание здесь

1 Ответ

0 голосов
/ 01 января 2019

Вам не хватает части за в вашем списке.Это должно быть

[table for table in soup.find_all('table', class_='sc_courselist') if contains_href(table)]
...