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

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

26.08.2014, 16:08. Показов 2343. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru