Форум сайта python.su
Всем доброго дня. Подскажите что не так, почему ошибку выдает.
Сайт https://1xstavka.ru/live/Football/
>>> pages = soup.find('ul', class_='liga_menu').find_all('a', class_=' link').get('href')
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\beautifulsoup4-4.6.0-py3.6.egg\bs4\element.py”, line 1807, in __getattr__
AttributeError: ResultSet object has no attribute ‘get’. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
Если в конце убрать .get('href') то он находит тег ‘a’. А мне нужно вытащить ссылки с этого тега. Но выдает ошибку.
Офлайн
find_all возвращает список, а к списку get() не применяется
Офлайн
RomissevdСпасибо)
find_all возвращает список, а к списку get() не применяется
Офлайн
GunS86Одному Ему известно)) Код выкладывай, иначе тебе ничем никто не поможет. Летая в догадках, что-то с твоим именем при записи в файл не так.
почему так пишет.
Офлайн
[quote=Romissevd][/quote] import requests from bs4 import BeautifulSoup import csv from datetime import datetime def get_html(url): r = requests.get(url) return r.text # Возращает HTML - код страницы def get_total_pages(html): soup = BeautifulSoup(html, 'lxml') pages = soup.find('ul', class_='liga_menu').find_all('li') links = [] for li in pages: a = li.find('a').get('href') #берем ссылки матчей, это строка(string) link = 'https://1xstavka.ru/' + a links.append(link) #записывает в конец списка return links def get_page_data(html): soup = BeautifulSoup(html, 'lxml') try: name = soup.find('span', class_='c-events__team').text.strip() except: name = '' try: schet = soup.find('div', class_='c-events__score').text.strip() except: schet = '' data = {'Матч': name, 'Счет': schet} return data def write_csv(data): with open('1xstavka.csv', 'a') as parser: #Парсер название файла куда все сохраниться writer = csv.writer(parser) writer.writerow( (data['name'], data['schet']) ) print(data['name'], 'parsed') def main(): url = 'https://1xstavka.ru/live/Football/' all_links = get_total_pages( get_html(url) ) for index, url in enumerate(all_links): #index придуманная переменная html = get_html(url) data = get_page_data(html) write_csv(data) print(index) if __name__ == '__main__': main()
Офлайн
writer.writerow( (data['Матч'], data['Счет']) ) print(data['Матч'], 'parsed')
Отредактировано Romissevd (Май 23, 2018 20:16:42)
Офлайн
Romissevd
Traceback (most recent call last): File "soccer.py", line 67, in <module> main() File "soccer.py", line 61, in main write_csv(data) File "soccer.py", line 46, in write_csv writer.writerow( (data['name'], KeyError: 'name'
Офлайн
Блин все, забыл сохранить)) все нормально)) Спасибо!!)))
Офлайн