Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Smile:)
3 / 3 / 0
Регистрация: 26.05.2010
Сообщений: 27

Парсинг: получить все термины с сайта

26.08.2014, 16:08. Показов 2313. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день
Очень нужна Ваша помощь.
Мне нужно получить с сайта http://www.ekonomiks.net.ua/ все термины. Я смог сделать, чтобы программа выбирала первые термины с каждой страницы. А не знаю, как сделать, чтобы выбрать все. Подскажите пожалуйста.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# –*coding:utf-8 *–
from lxml.html import parse
from urllib.request import urlopen
from urllib.parse import urljoin
 
from lxml.html import fromstring
 
 
URL = 'http://www.ekonomiks.net.ua/'
ITEM_PATH = '.letters'
DESCR_PATH = '.container .content'
def parse_let():
    f=urlopen(URL)
    list_html = f.read().decode('utf-8')
    list_doc = fromstring(list_html)
    
    for div in list_doc.cssselect(ITEM_PATH):
        for elem in div:
            a = elem.cssselect('a')[0]
            
            href = a.get('href')
            url = urljoin(URL, href)
            details_html = parse(url).getroot()
            for descr_elem in details_html.cssselect(DESCR_PATH):
                a2 = descr_elem.cssselect('a')[0]
                name = a2.text
                print(name)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2014, 16:08
Ответы с готовыми решениями:

Парсинг сайта ras.arbitr.ru как получить JSON ответ?
Добрый день! Пытаюсь спарсить данные с сайта ras.arbitr.ru посредством POST запроса, но не могу получить JSON ответ с данными документов,...

Парсинг сайта. Не все данные берутся
Хочу создать бота, который показывает онлайн на сайтах csgorun.run, cs.fail.org и других. Я решил начать с сайта csgorun.run и вот такой...

Вытащить все данные с сайта? (парсинг)
Всем привет, есть сайт moyka-ufa.ru/29.html , там чтобы посмотреть число баллов необходимо ввести номер карты 6 - значный После...

9
Эксперт С++
 Аватар для Andrew_Lvov
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
26.08.2014, 23:02
Лучший ответ Сообщение было отмечено Smile:) как решение

Решение

Это точно вы делали ? ))
Нужно всего то вместо
Python
1
2
3
a2 = descr_elem.cssselect('a')[0]
name = a2.text
print(name)
сделать цикл:
Python
1
2
3
for a_el in descr_elem.cssselect('a'):
    name = a_el.text
    print(name)
1
 Аватар для Smile:)
3 / 3 / 0
Регистрация: 26.05.2010
Сообщений: 27
27.08.2014, 16:20  [ТС]
Спасибо за помощь
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Это точно вы делали ? ))
ну да) с помощью интернета и всяких уроков

у меня еще один вопрос, как сделать что б все те термины записывались в файл, но в в виде списка? у меня где-то 1/5 записывается, а дальше ошибка

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# –*coding:utf-8 *–
from lxml.html import parse
from urllib.request import urlopen
from urllib.parse import urljoin
from lxml.html import fromstring
 
 
URL = 'http://www.ekonomiks.net.ua/'
ITEM_PATH = '.letters'
DESCR_PATH = '.container .content'
def parse_let():
    f=urlopen(URL)
    list_html = f.read().decode('utf-8')
    list_doc = fromstring(list_html)
    term=[]
    for div in list_doc.cssselect(ITEM_PATH):
        for elem in div:
            a = elem.cssselect('a')[0]
            
            href = a.get('href')
            url = urljoin(URL, href)
            details_html = parse(url).getroot()
            for descr_elem in details_html.cssselect(DESCR_PATH):
                for a_el in descr_elem.cssselect('a'):
                    name = a_el.text
                    term.append(name)
    return (term)              
                
 
def export(filename, term):
    filename = open('term.txt', 'w+')
    for word in term:
        filename.write(word)
    filename.close
    return (export)
    
 
            
def main():
    term = parse_let()
    export('term.txt', term)
ошибка

Python
1
UnicodeEncodeError: 'charmap' codec can't encode characters in position 10-11: character maps to <undefined>
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.08.2014, 16:56
У меня выполнилось без ошибок, у вас какой python?
Судя по испортам вы используете тройку, но в тоже в время зачем-то объявляете кодировку в начале файла, хотя в тройке это не требуется. Ну и к тому же ещё ошибка "странная", точнее она возникает чаще всего на двойке, а не тройке.

Добавлено через 48 секунд
Цитата Сообщение от Smile:) Посмотреть сообщение
но в в виде списка
В столбик имеете ввиду?
0
 Аватар для Smile:)
3 / 3 / 0
Регистрация: 26.05.2010
Сообщений: 27
27.08.2014, 18:09  [ТС]
Цитата Сообщение от tsar925 Посмотреть сообщение
у вас какой python?
третий
про кодировку не знал, спасибо)

Цитата Сообщение от tsar925 Посмотреть сообщение
В столбик имеете ввиду?
да, в столбик
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.08.2014, 19:19
Лучший ответ Сообщение было отмечено Smile:) как решение

Решение

Цитата Сообщение от Smile:) Посмотреть сообщение
да, в столбик
Строчку 33 приведи к виду
Python
1
filename.write(word + '\n')
1
 Аватар для Smile:)
3 / 3 / 0
Регистрация: 26.05.2010
Сообщений: 27
27.08.2014, 21:06  [ТС]
Спасибо!
А от ошибки как избавиться ?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
27.08.2014, 23:40
У меня ошибка не вылетает. Пришли полный текст ошибки
0
 Аватар для Smile:)
3 / 3 / 0
Регистрация: 26.05.2010
Сообщений: 27
28.08.2014, 00:15  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    main()
  File "D:\test.py", line 41, in main
    export('term.txt', term)
  File "D:\test.py", line 33, in export
    filename.write(word + '\n')
  File "C:\Python34\lib\encodings\cp1251.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 10-11: character maps to <undefined>
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
28.08.2014, 00:39
Строку 31 приведите к виду:
Python
1
filename = open('term.txt', 'w+', encoding='utf8')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2014, 00:39
Помогаю со студенческими работами здесь

Парсинг изображений и их сохранение с сайта,работает, но загружаются не все
Доброго времени суток! Задача: загрузить с сайта, к примеру, https://yandex.ru/images/search?text=zebra, 1000 изображений. Пытаюсь...

Скиньте все термины по Pascal ABC
Завтра защита контрольной работы по программированию. Скиньте термины хочу повторить термины Добавлено через 21 минуту Заранее...

Получить все ссылки с одного memo и записать в другой (парсинг)
Мне надо получить все ссылки с одного memo и перекинуть в другой вот как я делаю procedure TForm1.Button12Click(Sender: TObject); var...

Парсинг страницы: Можно ли получить все значении span и вывести в заданном формате?
Можно ли получить все значении span, и вывести в виде: 23(2) 20(1) &lt;div class=&quot;row&quot;&gt; &lt;div class=&quot;score&quot;&gt; ...

Получить все страницы сайта
Есть ли возможность получить все страницы и папки на сайте ? Просто вроде давно где-то видел пример и не могу найти сейчас


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru