Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 4

Проблема при парсинге

09.10.2019, 18:27. Показов 7167. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Помогите, пожалуйста, новичку решить проблему. Пишу парсер магазина. Скрипт постранично вытаскивает ссылки лотов и далее каждый лот парсит и сохраняет в файл. С первой страницей каталогов проблем нет, как только парсится 2я страница и далее к лотам добавляются дополнительные теги.
Например:
Каталог https://www.kupi-jeans.ru/muzh... a/dzhinsy/, страница https://www.kupi-jeans.ru/muzh... ?PAGEN_2=2. На странице отображается 15 лотов, столько же если искать по тегам ('div', class_='productColImage') в средствах разработчика в браузере или анализировать сохраненную страницу. А вот результат парсинга показывает 25 тегов.
Кликните здесь для просмотра всего текста
[<div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a648_1/">
<img alt="Кроссовки мужские (зима) Suba A648-1" src="/upload/resize_cache/iblock/4ef/220_200_1/4ef9c284a09f3fc87a56d1c87907472f.jpg" title="Кроссовки мужские (зима) Suba A648-1"/>
<span class="getFastView" data-id="153104">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a476_5/">
<img alt="Кроссовки мужские (зима) Suba A476-5" src="/upload/resize_cache/iblock/e88/220_200_1/e8890e251d8131828329ee29627d1267.jpg" title="Кроссовки мужские (зима) Suba A476-5"/>
<span class="getFastView" data-id="153128">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a646_1/">
<img alt="Кроссовки мужские (зима) Suba A646-1" src="/upload/resize_cache/iblock/651/220_200_1/651897b5bde509224bf74841d13877dd.jpg" title="Кроссовки мужские (зима) Suba A646-1"/>
<span class="getFastView" data-id="153135">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a646_2/">
<img alt="Кроссовки мужские (зима) Suba A646-2" src="/upload/resize_cache/iblock/b4b/220_200_1/b4b70c5bf57a075053a5d1845725679e.jpg" title="Кроссовки мужские (зима) Suba A646-2"/>
<span class="getFastView" data-id="153141">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_erebos_985/">
<img alt="Кроссовки мужские (зима) Erebos 985" src="/upload/resize_cache/iblock/aaa/220_200_1/aaa717486957058226d521fe52a7bd2c.jpg" title="Кроссовки мужские (зима) Erebos 985"/>
<span class="getFastView" data-id="152795">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_erebos_985_0/">
<img alt="Кроссовки мужские (зима) Erebos 985-0" src="/upload/resize_cache/iblock/e85/220_200_1/e851aacfae87aa8e335c331b2293aecd.jpg" title="Кроссовки мужские (зима) Erebos 985-0"/>
<span class="getFastView" data-id="152801">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_8502_8/">
<img alt="Кроссовки мужские Erebos 8502-8" src="/upload/resize_cache/iblock/c1f/220_200_1/c1f65189f4b81ef1b7a62f9bdc20cba8.jpg" title="Кроссовки мужские Erebos 8502-8"/>
<span class="getFastView" data-id="152794">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_837_3/">
<img alt="Кроссовки мужские Erebos 837-3" src="/upload/resize_cache/iblock/614/220_200_1/61418c8bdcbfe34672943b014c15b0f6.jpg" title="Кроссовки мужские Erebos 837-3"/>
<span class="getFastView" data-id="152587">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_837_1/">
<img alt="Кроссовки мужские Erebos 837-1" src="/upload/resize_cache/iblock/245/220_200_1/245483613521963fdf46b6d747ac8c4d.jpg" title="Кроссовки мужские Erebos 837-1"/>
<span class="getFastView" data-id="152579">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_8311_14/">
<img alt="Кроссовки мужские Erebos 8311-14" src="/upload/resize_cache/iblock/52a/220_200_1/52ad427c38a73cccb51eee7367e8a5b7.jpg" title="Кроссовки мужские Erebos 8311-14"/>
<span class="getFastView" data-id="152615">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_8501_8/">
<img alt="Кроссовки мужские Erebos 8501-8" src="/upload/resize_cache/iblock/bd3/220_200_1/bd3f702731484a486e2d544941371736.jpg" title="Кроссовки мужские Erebos 8501-8"/>
<span class="getFastView" data-id="152569">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_8501_5/">
<img alt="Кроссовки мужские Erebos 8501-5" src="/upload/resize_cache/iblock/135/220_200_1/13580b613b607c0cedd14e045ad32aa9.jpg" title="Кроссовки мужские Erebos 8501-5"/>
<span class="getFastView" data-id="152563">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_837_l/">
<img alt="Кроссовки мужские Erebos 837-L" src="/upload/resize_cache/iblock/f7a/220_200_1/f7aceee17a86b9811cde67b5f64c633f.jpg" title="Кроссовки мужские Erebos 837-L"/>
<span class="getFastView" data-id="152582">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_8501_1/">
<img alt="Кроссовки мужские Erebos 8501-1" src="/upload/resize_cache/iblock/410/220_200_1/410a84502707a8b29f4301d7089231a1.jpg" title="Кроссовки мужские Erebos 8501-1"/>
<span class="getFastView" data-id="152558">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/krossovki/krossovki_muzhskie_erebos_8311_l/">
<img alt="Кроссовки мужские Erebos 8311-L" src="/upload/resize_cache/iblock/db4/220_200_1/db4b411bec2987b65298a58c7ec9b86b.jpg" title="Кроссовки мужские Erebos 8311-L"/>
<span class="getFastView" data-id="152606">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a476_3/">
<img alt="Кроссовки мужские (зима) Suba A476-3" src="/upload/resize_cache/iblock/cc3/220_200_1/cc358a2c5417b0e0f7684dfe24b0fb07.jpg" title="Кроссовки мужские (зима) Suba A476-3"/>
<span class="getFastView" data-id="153122">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a476_1/">
<img alt="Кроссовки мужские (зима) Suba A476-1" src="/upload/resize_cache/iblock/ae7/220_200_1/ae723ed99a32f91a740f0ac9c9f0c02e.jpg" title="Кроссовки мужские (зима) Suba A476-1"/>
<span class="getFastView" data-id="153116">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a646_6/">
<img alt="Кроссовки мужские (зима) Suba A646-6" src="/upload/resize_cache/iblock/2e9/220_200_1/2e9cd40f7ce6ce870c97707f5fdbeda7.jpg" title="Кроссовки мужские (зима) Suba A646-6"/>
<span class="getFastView" data-id="153146">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_suba_a648_3/">
<img alt="Кроссовки мужские (зима) Suba A648-3" src="/upload/resize_cache/iblock/003/220_200_1/003098273bdf7b1d4558eab1016aadc8.jpg" title="Кроссовки мужские (зима) Suba A648-3"/>
<span class="getFastView" data-id="153110">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/botinki_2/botinki_muzhskie_nasite_m60_5a/">
<img alt="Ботинки мужские Nasite M60-5A" src="/upload/resize_cache/iblock/b48/220_200_1/b480331df76f1fd047335d0ad8b52788.jpg" title="Ботинки мужские Nasite M60-5A"/>
<span class="getFastView" data-id="153749">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/botinki_2/botinki_muzhskie_nasite_m90_5c/">
<img alt="Ботинки мужские Nasite M90-5C" src="/upload/resize_cache/iblock/98f/220_200_1/98fb93ac99c9188f1df65b21068cca6f.jpg" title="Ботинки мужские Nasite M90-5C"/>
<span class="getFastView" data-id="153755">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/botinki_2/botinki_muzhskie_nasite_m59_1f/">
<img alt="Ботинки мужские Nasite M59-1F" src="/upload/resize_cache/iblock/e6f/220_200_1/e6ff572872390601031f3de5cca1fd9d.jpg" title="Ботинки мужские Nasite M59-1F"/>
<span class="getFastView" data-id="153761">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/botinki_2/botinki_muzhskie_nasite_m59_2e/">
<img alt="Ботинки мужские Nasite M59-2E" src="/upload/resize_cache/iblock/81a/220_200_1/81a7289d377af995c94557789f78091d.jpg" title="Ботинки мужские Nasite M59-2E"/>
<span class="getFastView" data-id="153767">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/botinki_2/botinki_muzhskie_nasite_m59_3a/">
<img alt="Ботинки мужские Nasite M59-3A" src="/upload/resize_cache/iblock/e79/220_200_1/e79483b3c9fe691c3003e6dadbe2ddfb.jpg" title="Ботинки мужские Nasite M59-3A"/>
<span class="getFastView" data-id="153773">Быстрый просмотр</span>
</a>
</div>, <div class="productColImage">
<a class="picture" href="/obuv/muzhskaya_obuv/muzhskie/zimnie_krossovki/krossovki_muzhskie_zima_erebos_985_14/">
<img alt="Кроссовки мужские (зима) Erebos 985-14" src="/upload/resize_cache/iblock/c97/220_200_1/c979f60c934503bc57e0b5d4606df435.jpg" title="Кроссовки мужские (зима) Erebos 985-14"/>
<span class="getFastView" data-id="153779">Быстрый просмотр</span>
</a>
</div>]

Откуда они взялись? И куда копать, подскажите, плиз!
Код ниже
Кликните здесь для просмотра всего текста
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import requests
import csv
import re
from bs4 import BeautifulSoup
 
def save_file(data, file_name):
    with open(file_name, "a", newline='') as out_file:
        writer = csv.writer(out_file, delimiter=';')
        print (file_name)
        writer.writerow(data)
 
def list_parse(urla, headers, file_name):
    req = s.post(urla, headers=headers)
    soupchik = BeautifulSoup (req.content, 'html.parser')
    list =[]
    list = soupchik.find_all('div', class_='productColImage')
    print (len(list))
    with open ('test.txt', 'w') as new_file:
        print (list, file = new_file)
    for tovar in list:
        url = 'https://www.kupi-jeans.ru' + tovar.find('a', class_='picture').get ('href')
        #print (url)
        r = s.post(url, headers=headers)
        soup = BeautifulSoup (r.content, 'html5lib')
        zapis = []
        zapis.append(soup.find('span', class_='changeArticle').text + ' ' + soup.find('h1', class_='changeName').text)
        zapis.append(soup.find('span', class_='priceVal').text)
        size_array = soup.find(attrs={'data-name' : re.compile('SIZE')})
        selection = size_array.find_all('li', class_='elementSkuPropertyValue')
        size = ''
        for variant in selection:
            size += variant.find('a', class_='elementSkuPropertyLink').text.strip()+';'
        zapis.append(size[:-1])
        size_array = soup.find(attrs={'data-name' : re.compile('COLOR')})
        selection = size_array.find_all('li', class_='elementSkuPropertyValue')
        color = ''
        for variant in selection:
            color += variant.find('a', class_='elementSkuPropertyLink').text.strip()+';'
        zapis.append(color[:-1])
        zapis.append(soup.find('div', class_='changeDescription').text.strip())
        try:
            selection = soup.find_all('div', class_='slideBox')
            add_pict = ''
            for variant in selection:
                add_pict += ', ' + variant.find('a').get ('href')
        except:
            pass
        zapis.append('https://www.kupi-jeans.ru' + add_pict[2:])
        print (zapis)
        save_file(zapis, file_name)
        print ('---------------------------------------------------------------')
        
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
           }
with requests.Session() as s:
    f = open ('urls.txt','r')
    for line in f:
        url = line [:-1]
        file_name = url.split('/')[3]+'-'+url.split('/')[4]+'.csv'
        print (file_name)
        list_parse (url, headers, file_name)
        try:
            r = s.post(url, headers=headers)
            soup = BeautifulSoup (r.content, 'html5lib')
            #with open ('test.txt', 'w') as new_file:
            #print (soup, file = new_file)
            soup1 = soup.find('div', class_='bx-pagination')
            last_page = len(soup1('li'))-2
            pages = int(soup1.find_all('li')[last_page].find('span').text)
            print (pages)
        
            for i in range(2, pages+1):
                cur_url = url+'?PAGEN_2='+str(i)
                print (cur_url)
                list_parse (cur_url, headers, file_name)
        except:
            print ('pass')
    f.close()


Добавлено через 5 часов 7 минут
IRIP, про определение страниц не совсем понял. У меня сначала определяется последняя страница, и потом в цикле парсер проходится по всем страницам. Для дебага, ссылка страницы выводится в терминал. Тут, вроде, логика корректно работает.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2019, 18:27
Ответы с готовыми решениями:

Проблема с кириллицей при парсинге
Microsoft Windows (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. C:\Users\admin&gt;chcp Текущая кодовая...

Проблема тегами при парсинге сайта
у меня есть сайт matol.kz и я создаю бота который будет уведомлять при появлении новых олимпиад в чем заключается проблема? я...

Появляются лишние символы при сохранении страниц html при парсинге с Селениум
В коде такой фрагмент. С проблемой сталкивался на разных сайтах. На заднем плане скриншот из браузера. На переднем из текстового редактора...

9
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
09.10.2019, 19:01
Лучший ответ Сообщение было отмечено poputchik_krsk как решение

Решение

poputchik_krsk, насколько зачитана документация супца?

Цитата Сообщение от poputchik_krsk Посмотреть сообщение
На странице отображается 15 лотов
Цитата Сообщение от poputchik_krsk Посмотреть сообщение
А вот результат парсинга показывает 25 тегов.
вот в консоли на коленке, там 15 элементов, может не так ищешь?
Python
1
2
3
4
5
6
7
8
>>> import requests as req
>>> resp = req.get('https://www.kupi-jeans.ru/muzhskaya_odezhda/dzhinsy/?PAGEN_2=2')
>>> text = resp.text
>>> from bs4 import BeautifulSoup
>>> res = BeautifulSoup (text, 'html.parser')
>>> a_l = res.find_all('div', {'class':'productColImage'})
>>> len(a_l)
15
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
10.10.2019, 08:32
Ой, стой! =)

нам на каждой странице нужно получить урл записи. Перейти в запись и затем ее парсить.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests
import csv
import re
from bs4 import BeautifulSoup
 
url = 'https://www.kupi-jeans.ru/muzhskaya_odezhda/dzhinsy/'
 
r = requests.get(url)
# print(r)  # if r == 200 продолжаем
 
soup = BeautifulSoup(r.content, 'lxml')
# print(soup)  # получили страницу, теперь ищем на ней заголовки записей
 
zapis = soup.find('a', class_='name')
print(zapis)  # =)
так, мы получаем запись

<a class="name" href="/muzhskaya_odezhda/dzhinsy/uteplennye_dzhinsovye_bryuki/dzhinsy_muzhskie_uteplennye_vetasap_up60 62/"><span class="middle">Джинсы мужские утепленные Vetasap UP6062</span></a>

Главная задача при парсинге - получить список урлов Как получить все ссылки с сайта? тут я тоже когда-то решал подобную задачу

имея список готовых адресов каждой страницы товара - ты Б-г =)
1
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 4
10.10.2019, 19:20  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
вот в консоли на коленке, там 15 элементов, может не так ищешь?
Добрался наконец-то до дома, действительно помогло. Огромнейшее спасибо.
На ночь открыл вкладку с докой по Requests
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
10.10.2019, 20:47
Цитата Сообщение от poputchik_krsk Посмотреть сообщение
с докой
Лучшая дока (в предыдущей теме) это ютуб канал Олега Молчанова
а главное, наглядно...

для старта - больше чем надо, даже многопоточность и парсинг ajax
1
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
10.10.2019, 23:10
Цитата Сообщение от IRIP Посмотреть сообщение
Лучшая дока (в предыдущей теме) это ютуб канал Олега Молчанова
а главное, наглядно...
Я не уверен что это лучшая дока. Во всяком случае в части парсинга. Специально посмотрел его ролики по парсингу. Не впечатлило.

Цитата Сообщение от poputchik_krsk Посмотреть сообщение
Пишу парсер магазина.
Попробуйте Scrapy. Масса возможностей по экстракции данных и их обработке после сбора. Хотите - XPATH, CSS, REGEXP.... Во всяком случае время потратите не зря.
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
11.10.2019, 08:50
Цитата Сообщение от SergeyDe Посмотреть сообщение
Я не уверен что это лучшая дока
и правильно не уверен, лучшая дока -это сама дока, а не видяшки и статейки
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
12.10.2019, 10:44
Цитата Сообщение от SergeyDe Посмотреть сообщение
Не впечатлило
Они ориентированы на уровень НОЛЬ
и в момент, когда мне надо было "уже вчера", а выслушивать по форумам оскорбления и унижения, насмешки и откровенно идиотский троллинг - НЕ ХОТЕЛОСЬ - его видео спасли всю ситуацию.

Все разжевано, разложено по полочкам, и подано в лучшем виде!

Безусловно, если у вас есть другие, полезные и интересные каналы с уроками по данной теме! Выкладывайте!


Цитата Сообщение от SergeyDe Посмотреть сообщение
Попробуйте Scrapy
Пробовали. Для новичка, синтаксис, формат работы, крайне сложен... Эти списки списком, замудрености...
для человека, который уже в теме - он, возможно более функционален, но для тех, кто только начинает, и кому нужно просто
сделать
без лишних заморочек
он не подходит

Добавлено через 2 минуты
SergeyDe, чем scrapy лучше?
решение каких задач, на каком этапе, по вопросу топикстартера он может упростить?
0
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
12.10.2019, 23:54
Цитата Сообщение от IRIP Посмотреть сообщение
когда мне надо было "уже вчера", а выслушивать по форумам оскорбления и унижения, насмешки и откровенно идиотский троллинг - НЕ ХОТЕЛОСЬ
1. Надеюсь, ко мне это не относится
2. Многое зависит от того , как задается вопрос.
3. ...........

Цитата Сообщение от IRIP Посмотреть сообщение
Все разжевано, разложено по полочкам, и подано в лучшем виде!
Я смотрел видео. За код типа
Python
1
2
3
4
5
6
7
8
9
10
11
12
try:
  a = expr()
except:
  a = ""
try:
  a = expr2()
except:
  a = ""
try:
  a = expr3()
except:
  a = ""
надо просто бить по рукам....

в общем я не впечатлен. Более того, приходилось переформатировать стажеров пересмотревших такие видео уроки... т.к. к реальной практике это мало пригодно.

Цитата Сообщение от IRIP Посмотреть сообщение
Пробовали. Для новичка, синтаксис, формат работы, крайне сложен... Эти списки списком, замудрености...
Скрапи прост как автомат калашникова. Но тем не менее
- у него хорошая архитектура
- возможность разрабатывать плагины (downloaders, pipeline, extensions) которые решают массу проблем
- очень легко вытаскивать данные XPATH, CSS, REGEXP + легко параметризировать все это
- и много чего другого.

Цитата Сообщение от IRIP Посмотреть сообщение
кому нужно просто сделать без лишних заморочек он не подходит
смотря что делать. Может еще проще поставить расширение к хрому которое позволяет вытаскивать данные без всякого программирования....
На скрапи паук делается быстро (10-15 мин в 80% случаев). Гораздо больше времени уходит на анализ источника..
Лично из моего опыта на скрапи вполне реально организовать процесс сбора данных более чем со ста сайтов за неделю.
Причем основной код паука короче чем код топикстартера.

Цитата Сообщение от IRIP Посмотреть сообщение
Безусловно, если у вас есть другие, полезные и интересные каналы с уроками по данной теме! Выкладывайте!
Есть в планах записать что нибудь из реальной практики... как будет возможность
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
13.10.2019, 00:31
Цитата Сообщение от SergeyDe Посмотреть сообщение
Надеюсь, ко мне это не относится
Нет, cyberforum - самый продвинутый - тут самая вежливая и учтительная аудитория =)

я говорю про lheubt ресурсы, не будем их называть...


Цитата Сообщение от SergeyDe Посмотреть сообщение
надо просто бить по рукам....
Явное - лучше, чем не явное. Я так думаю, и новичку (мне) было именно так - все понятно.
От простого к сложному. Мы ведь все когда-то были детьми? Первый шаг? Первое слово?

А бить по рукам, за первый шаг (понятный и осознанный?)



Цитата Сообщение от SergeyDe Посмотреть сообщение
данные XPATH, CSS, REGEXP + л
Где они могут пригодиться в задаче топикстартера?
и на сколько ему усложнит жизнь все это -
если ему просто нужно получить список урлов всех товаров, в цикле

........
я скажу - я через этот ад прошел -
месяц! Месяц нужен был на то, чтобы вестись (плестись) изучая то одно, то другое ... которое
совсем не добавляло оптимизма, что когда-нибудь (точно такая же, задача) как у ТС
будет решена...

не нужно проходить курсы дизайна и маникюра
если тебе нужно просто подстричь ногти..


не нужно усложнять жизнь =)




Цитата Сообщение от SergeyDe Посмотреть сообщение
Есть в планах
Интересно, конечно, будет посмотреть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2019, 00:31
Помогаю со студенческими работами здесь

Как исключить id при парсинге?
Код следующий: import requests from bs4 import BeautifulSoup def html(url): page = requests.get(url) ...

Не пишет в файл при парсинге
import requests from bs4 import BeautifulSoup url = &quot;https://ru-ru.soccerwiki.org/league.php?leagueid=28&quot; headers = { ...

Ошибка при парсинге на bs4 =(
Не пойму почему при парсинге гугла он не чего не находит в перемменую desc Ниже код import requests from bs4 import BeautifulSoup...

Отменить редирект при парсинге
Есть сайт https://www.promkod.ru/. При переходе на страницу с магазином, например https://www.promkod.ru/shop/afisha.ru?oid=726453, и клику...

Ошибка при парсинге валют
import requests from bs4 import BeautifulSoup from datetime import datetime url = &quot;http://www.cbr.ru/scripts/XML_daily.asp?&quot; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru