Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431

Парсинг на одних регулярках

08.04.2016, 19:34. Показов 2135. Ответов 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import requests
import re
numb = 1
endd = ';preset=smartfon/'
startt = 'http://rozetka.com.ua/mobile-phones/c80003/filter/page='
def writeHeader(file):
    header = r"""<!DOCTYPE html>
    <html>
        <head>
            <meta charset='utf-8' />
            <title>Смартфоны на розетке</title>
        </head>
        """
    file.write(header)
    pass
 
def writeBody(file, data):
    file.write("\t<body>\n")
    file.write('<ul>')
    for i in data:
        file.write('<li><a href="{}">{}</a></li>'.format(*i))
        for i in data1:
            file.write('<img src="'+i+'"')
    file.write('</ul>')
    file.write("\t</body>\n")
    pass
 
def witeFooter(file):
    footer = "</html>"
    file.write(footer)
    pass
 
def writeToHTML(file, data):
    with open(file, 'a', encoding='utf-8') as f:
        writeHeader(f)
        writeBody(f, data)
        witeFooter(f)
outHTML = "result.html"
 
 
for z in range(11):
    ppp = requests.get(startt+str(numb)+endd)
    output = ppp.text
    reNameRef = re.compile(r'<div\s+class="g-i-tile-i-title.*\s+<a.*href="([^"]+)"[^>]+>\s+([^<]+?)(?:\n|\t)+', re.MULTILINE)
    data = reNameRef.findall(output)
    p = re.compile(r'http.*[jpg|png]')
    data1 = p.findall(output)
    writeToHTML(outHTML, data) 
    numb+=1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2016, 19:34
Ответы с готовыми решениями:

Группировка в регулярках
У меня есть, например строка: &quot;protected void fun(string name, bool b = false, Action&lt;string&gt; End = null);&quot; Сделал такой...

Обратный слешв регулярках
Нужно заменить последовательность символов a\\\a на ! Я написал выражение: echo preg_replace(&quot;#a\\\\{3}a#&quot;, &quot;!&quot;,...

Разница между () и [] в регулярках ( ecma. )
Hello world! Вопрос в заголовке темы.

43
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
18.04.2016, 22:19  [ТС]
Студворк — интернет-сервис помощи студентам
Jabbson, чтобы я без вас делал.

Добавлено через 1 минуту
просто zip нужно было нормально изучить...
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
18.04.2016, 23:35
Да как бы нормально все нужно изучать
0
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
19.04.2016, 00:10  [ТС]
чтобы окончательно закрыть для себя эту тему, решил пособирать всю инфу со всех страниц, пагинация в общем, что для этого в моем понимании нужно сделать, просто часть кода загнать в for...как я его не загонял, то тошлько 1 страница сохранится, то только последняя...наверное нужно было сразу писать с расчетом на все страницы, а не на одну...в общем код итоговый такой
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
42
from bs4 import BeautifulSoup
import requests
import re
import csv
url = 'http://rozetka.com.ua/mobile-phones/c80003/filter/page=1;preset=smartfon/'
r = requests.get(url)
page = BeautifulSoup(r.text, "html.parser")
rows = page.findAll('div',{'class':"g-i-tile-i-title clearfix"})
names = []
pictures = []
prices = []
descriptions = []
for name in rows:
    names.append(name.text)
for i in range(len(names)):
    names[i] = names[i].strip()
 
divs = page.find_all('div', {'class':'g-i-tile-i-box-desc'})
 
for div in divs:
    pictures.append(div.find('img')['data_src'])
 
 
for js in divs:
    prices.append(js.find('script'))
    
r = re.compile('price_json.usd_price = (.*?);')
f = r.findall(str(prices))
prices = f
p = re.compile(r'<div\s+class="(?:g-i-tile-i-title.*\s+<a.*href=")([^"]+)(?:"[^>]+>\s+(?:[^<]+?)(?:\n|\t)+)')
links = p.findall(str(divs))
rows2 = page.findAll('ul',{'class':"g-i-tile-short-detail"})
for name in rows2:
    descriptions.append(name.text)
for i in range(len(descriptions)):
    descriptions[i] = descriptions[i].strip()
 
with open ('rozetka.csv','w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(('Название', 'Описсание', 'Цена', 'Ссылка на картинку', 'Ссылка на телефон'))
    for row in zip (names,descriptions,prices,pictures,links):
        writer.writerow(row)
0
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
20.04.2016, 17:56  [ТС]
Может кто-то сможет направить насчет такого вопроса, а как получить отзывы ко всем товарам на данном примере?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2016, 17:56
Помогаю со студенческими работами здесь

Точное соответствие в str_pos или регулярках
Дoбрый день, А мoжнo ли в str_pos задать тoчнoе сooтветствие, чтoб например, слoвo Слoн, нахoдилoсь, а слoвo Слoны, т.е. уже с буквoй...

Класс для проверки сложности пароля. На регулярках
Помогите с регулярными выражениями, кто в них разбирается. Правильно ли тут все? Нужно доработать этот класс. Думаю очень многим он может...

Сжать двухмерный массив, удалить все столбцы состоящие из одних нулей и все строки состоящие из одних нулей
Помогите написать программу.

Парсинг по порядку или парсинг до определенного тега
Доброго времени друзья! Подскажите пожалуйста, к примеру есть вот такой html код: &lt;div class=&quot;container mt-3&quot;&gt; ...

Парсинг JSON ответа. Парсинг строки с массивами
Есть ответ с сервера в виде json: ,\&quot;Polygon\&quot;:,]}&quot;, &quot;OrganizationId&quot;: 2, &quot;SyncDate&quot;: &quot;2021-01-20T11:23:42.007&quot; ...


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru