Аватар для Smile:)
3 / 3 / 0
Регистрация: 26.05.2010
Сообщений: 27

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

26.08.2014, 16:08. Показов 2338. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru