Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 23

Парсер html: вытащить весь текст, который в объявлениях

03.05.2015, 16:50. Показов 8011. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Нужна помощь в парсере нтмл
Вот силка
"http://vashmagazin.ua/nerukhomist/kvartyry/sykhivskyy-rayon/"

Нужно витащить весь текст которий в обявлениях
как внизу:

в. Антоненка

кімнат: 1
панель 4/9 40/20/10
742 500
33 000 $
825 $
ціна:
екв:
за м2:

(067) 676-7732 (063) 300-1879

Однокімнатну квартиру у Львові, в. Антоненка. житловий стан, паркет, лоджія з великоі кімнати, вигоди ізол., вільна, зелений двір, торг.


Пробивал разние библиотеки но както глубоко немог дойти .

Спасибо зарание!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.05.2015, 16:50
Ответы с готовыми решениями:

Парсер html, вытащить текст класса
Вытаскиваю html, но не могу понять как забрать порт прокси, вроде нашёл нужный селектор, но когда беру текст этого тега и класса, то...

Получить весь текст HTML-страницы, который находится между тегами, кроме заголовка
Здравствуйте, возникла задача отпарсить html. Конкретно, взять весь текст, который находится между тегами, кроме заголовка. Нужно написать...

Вытащить весь текст в тегах h2
подскажите как вытащить весь текст между <h2>блабла1</h2> и <h2>блабла2</h2> пытаюсь составить регулярки но них не получается... ...

52
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
05.05.2015, 00:46
Студворк — интернет-сервис помощи студентам
pip3 install cssselect
pip3 install requests
pip3 install lxml

Добавлено через 8 минут
Вот, к примеру, я во втором питоне делаю:
Python
1
print template.format(*[j.text_content().strip().replace('"', '') for j in i])
и получаю ошибку
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0432' in position 0: ordinal not in range(128)
а если
Python
1
print template.format(*[j.text_content().encode('utf-8').strip().replace('"', '') for j in i])
то
INSERT INTO vashmagazin (street, number, price, note) VALUES ("в. Антоненка- Давидовича","(098) 532-0000 (093) 810-5443","42 000 $","Двокімнатну квартиру у Львові, в. Антоненка- Давидовича. 2 балкони, підвал під кухнею 8 м, утеплена за рах. опалення, збільш. розширення площі, житловий стан, поряд школа, садочок, торг.")
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 23
05.05.2015, 01:01  [ТС]
Запускаю в python3.4 (тока что установил у виртуалку и все пакети тоже) но ошибка таже
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
05.05.2015, 02:40
Ошибка или текст заносится в базу в юникоде?
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 23
05.05.2015, 02:40  [ТС]
Проблему всеравно нерешил с базой даних много такой фигни там \00\00\00\00\00\00\00\00\00\00\00\00\00\ 00
Кстати есть отличний вивод через pprint
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.05.2015, 14:59
Цитата Сообщение от makc1902 Посмотреть сообщение
но ошибка таже
Какая?
Проверил на 3 и на 2, все идеально работает.

Код в принципе не менял, только подрефрактор, что уж сильно глаз мозолило:
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
import sqlite3
 
import lxml.html
import requests
 
 
url = 'http://vashmagazin.ua/nerukhomist/kvartyry/sykhivskyy-rayon/'
 
page = requests.get(url).text
parser = lxml.html.fromstring(page)
 
street = parser.cssselect('table.ogolosh-avto-sp tbody tr strong')
number = parser.cssselect('table.ogolosh-avto-sp tbody tr td.rowspan-fix')
price = parser.cssselect('table.ogolosh-avto-sp tbody tr td div.price_ner div.'
                         'right nobr:nth-child(3)')
note = parser.cssselect('div.text_hidden_def')
 
connect = sqlite3.connect('./testdb.db')
cursor = connect.cursor()
 
for data in zip(street, number, price, note):
    cursor.execute(
        'INSERT INTO you_shop (street, num, price, note) '
        'VALUES (?, ?, ?, ?)', [j.text_content().strip() for j in data]
    )
 
connect.commit()
connect.close()
Базу, так создавал:
SQL
1
2
3
4
5
6
7
8
CREATE TABLE you_shop
(
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    street TEXT NOT NULL,
    num TEXT NOT NULL,
    price TEXT NOT NULL,
    note TEXT NOT NULL
);
Миниатюры
Парсер html: вытащить весь текст, который в объявлениях  
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.05.2015, 15:00
Цитата Сообщение от makc1902 Посмотреть сообщение
Проблему всеравно нерешил с базой даних много такой фигни там \00\00\00\00\00\00\00\00\00\00\00\00\00\ 00
Как создаешь базу? Покажи скрин.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
05.05.2015, 15:49
alex925, чисто для себя, какой используешь драйвер для sqlite в pycharm?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.05.2015, 16:39
Цитата Сообщение от Jabbson Посмотреть сообщение
alex925, чисто для себя, какой используешь драйвер для sqlite в pycharm?
Первый попавшийся на глаза
Сейчас Xerial использовал.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
05.05.2015, 17:25
Цитата Сообщение от alex925 Посмотреть сообщение
Первый попавшийся на глаза
у меня для второго - зентуса - драйвер не выкачивается
а для ксериал ошибка вылазит
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sqlite_sequence
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near ")": syntax error)
  at org.sqlite.core.DB.newSQLException(DB.java:890)
  at org.sqlite.core.DB.newSQLException(DB.java:901)
  at org.sqlite.core.DB.throwex(DB.java:868)
  at org.sqlite.core.NativeDB.prepare(Native Method)
  at org.sqlite.core.DB.prepare(DB.java:211)
  at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:81)
  at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:71)
  at org.sqlite.jdbc3.JDBC3DatabaseMetaData.getIndexInfo(JDBC3DatabaseMetaData.java:1532)
  in RemoteDatabaseMetaDataImpl.getIndexInfo(RemoteDatabaseMetaDataImpl.java:303)
  in RemoteUtil.access$100(RemoteUtil.java:36)
  in RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:227)
  at com.sun.proxy.$Proxy116.getIndexInfo(Unknown Source)
  in DatabaseSchemaLoader.loadTableState(DatabaseSchemaLoader.java:316)
 
and 1 duplicate reports

а для БД показывает левый столбец unnamed


не смотря на то, что
SQL
1
2
3
4
5
6
7
8
9
sqlite> .schema vashmagazin
CREATE TABLE vashmagazin (
  id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  street CHAR(128),
  NUMBER CHAR(128),
  price CHAR(128),
  note CHAR(128)
);
sqlite>
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.05.2015, 18:53
Цитата Сообщение от Jabbson Посмотреть сообщение
у меня для второго - зентуса - драйвер не выкачивается
Да, есть такое дело. Только сейчас это заметил, раньше не было такого.

Цитата Сообщение от Jabbson Посмотреть сообщение
а для БД показывает левый столбец unnamed
У меня такой столбец появлялся, когда я через ide создавал с помощью конструктора. Потом из консоли создал и все норм.
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 23
05.05.2015, 21:43  [ТС]
Кстати у меня все работает
Спасибо ребята вам большое
Вот код весь
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
import lxml.html
import requests
import sqlite3
import pprint
 
page = requests.get('http://vashmagazin.ua/nerukhomist/kvartyry/sykhivskyy-rayon/').text
parser = lxml.html.fromstring(page)
 
street = parser.cssselect('table.ogolosh-avto-sp tbody tr strong')
number = parser.cssselect('td.rowspan-fix')
price = parser.cssselect('table.ogolosh-avto-sp tbody tr td div.price_ner div.right nobr:nth-child(3)')
note = parser.cssselect('table.ogolosh-avto-sp tbody tr td div.text_hidden_def ')
 
con = sqlite3.connect('parser.db')
cur = con.cursor()
cur.execute('CREATE TABLE parser (id INTEGER PRIMARY KEY, street CHAR(128), NUMBER CHAR(128), price CHAR(128), note CHAR(128))')
con.commit()
 
#template = u'INSERT INTO parser (street, number, price, note) VALUES ("{}","{}","{}","{}")'
 
for i in zip(street, number, price, note):
    #cur.execute(template.format(*[j.text_content().strip().replace('"', '') for j in i]))
    cur.execute('''INSERT INTO parser VALUES(?,?,?,?,?)''',
        (None, i[0].text_content().strip(), i[1].text_content().strip(), i[2].text_content().strip(), i[3].text_content().strip()))
 
 
con.commit()
cur.execute('SELECT * FROM parser')
for line in cur.fetchall():
    for item in line:
        print item,
    print ''
con.close()
А и мне сказали что писать вот так нехорошо будут пробоини в базе
Python
1
2
3
#template = u'INSERT INTO parser (street, number, price, note) VALUES ("{}","{}","{}","{}")'
for i in zip(street, number, price, note):
    cur.execute(template.format(*[j.text_content().strip().replace('"', '') for j in i]))
Еще раз большое спасибо.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.05.2015, 22:32
Цитата Сообщение от makc1902 Посмотреть сообщение
что писать вот так нехорошо
Так такого и нет в коде, посмотри мой код внимательней.

Исправь вот эту порнографию:
Python
1
2
cur.execute('''INSERT INTO parser VALUES(?,?,?,?,?)''',
        (None, i[0].text_content().strip(), i[1].text_content().strip(), i[2].text_content().strip(), i[3].text_content().strip()))
P.S в общем возьми код, который я прикрепил
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 23
05.05.2015, 22:42  [ТС]
alex925
Все красиво работает спасибо еще и еще))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2015, 22:42

Как вытащить весь текст из сайта?
Здравствуйте,можно ли как как то вытащить весь текст с сайта, тегов и всякого г**на много где текста находятся, и парсить всё просто...

Как вытащить весь текст из TextBlock?
В приложении WPF в XAML определен TextBlock, затем в коде с# предпринята попытка показать текст из него с помощью MessageBox.Show(), но в...

Не получается вытащить весь текст из xml-документа
Доброго времени суток. Использую либу tinyxml, на c++, нужно вытащить абсолютно весь текст. Возникла мысль отключить все теги и просто...

Как вытащить текст со Html странички? Html Agility Pack
Всё очень просто как вытащить текст с Html странички с помощью Html Agility Pack? К примеру у нас есть страничка того же сайта ...

Вытащить текст из HTML
Дан HTML <div class="answer" dir="ltr">какой- то текст</div> Подскажите как вытащить текст из этого кода, причем он может...


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

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru