Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 28, 2017 16:37:26

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг

Как ошибку исправить. Подскажите что не так и желательно объясните

 import urllib.request
from bs4 import BeautifulSoup
def get_hmtl(url):
	respons = urllib.request.urlopen(url)
	return respons.read()
def parse(html):
	soup = BeautifulSoup(html)
	table = soup.find('div', class_ = "container-fluid cols_table show_visited")
	projects = []
	for row in table.find_all('div'):
		cols = row.find_all('div')
		header = cols.find_all('h2')
		projects.append({
				#Записываем в словарь название
				'title': [title.text for title in header[0].a.find_all('a')]
			})
	for project in projects:
		print(project)
def main ():
	parse(get_hmtl('https://www.weblancer.net/jobs/'))
if __name__ == '__main__':
	main()
Вот ошибка:
ТЫК
Вот html сайта:
ТЫК

Скачать картинки, если не прогрузятся:

Отредактировано ELVYY (Фев. 28, 2017 16:45:37)

Прикреплённый файлы:
attachment 2.PNG (219,2 KБ)

Офлайн

#2 Фев. 28, 2017 16:38:20

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг

Первая картинка

Отредактировано ELVYY (Фев. 28, 2017 16:38:44)

Прикреплённый файлы:
attachment 1.PNG (43,0 KБ)

Офлайн

#3 Фев. 28, 2017 17:08:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Парсинг

 		cols = row.find_all('div')
		header = cols.find_all('h2')

Думается мне так: find_all возвращает все элементы внутри элемента. То есть это - набор значений. Вы к этому набору пытаетесь применить опять же find_all. Это нелогично, нужен один элемент, внутри которого вы будете искать все вхождения.



Офлайн

#4 Фев. 28, 2017 18:24:01

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Парсинг

Вот на скорую руку, а дальше продолжайте делать, что Вам необходимо

 import urllib.request
from bs4 import BeautifulSoup
def get_hmtl(url):
    respons = urllib.request.urlopen(url)
    return respons.read()
def parse(html):
    soup = BeautifulSoup(html)
    table = soup.find('div', class_ = "container-fluid cols_table show_visited")
    #projects = []
    for row in table.find_all('h2', class_ = "title"):
        print(row.find('a').text)
        
def main ():
    parse(get_hmtl('https://www.weblancer.net/jobs/'))
if __name__ == '__main__':
    main ()

Офлайн

#5 Фев. 28, 2017 18:39:37

ELVYY
Зарегистрирован: 2017-02-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг

Romissevd
cпасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version