Бред

Ответить в тред Ответить в тред
Аноним 30/09/20 Срд 14:23:50 2300079351
117dda9d2311bb2[...].jpg 272Кб, 630x330
630x330
13499156.png 61Кб, 735x335
735x335
Вопрос к программистам и не только.

Как быстро пропарсить (выдернуть) ссылки из страниц сайта из списка 1.txt?

Я уже имею решение, но оно крайне медленное - около одной страницы в секунду.

Ускорил все в 10 раз путем открытия нескольких окон c разделением файла ссылок через split, но это тоже не удобно, т.к. пропарсить нужно 360к страниц сайта (из списка txt).

Мое решение на данный момент - bash + curl:

#!/bin/bash
for domain in `cat link.txt`
do
echo $domain
`curl -s $domain | grep -o 'http.*>" ' >> result.log`
done

Имеется только ПК с Убунту.
Аноним 30/09/20 Срд 14:28:19 2300081942
bump
Аноним 30/09/20 Срд 14:33:39 2300084883
бамп
Аноним 30/09/20 Срд 14:39:42 2300088914
бамп
Аноним 30/09/20 Срд 14:40:47 2300089455
бамп
Аноним 30/09/20 Срд 14:45:12 2300092256
python
Аноним 30/09/20 Срд 15:06:07 2300105187
>>230009225
само собой, вопрос - каким образом?
Аноним 30/09/20 Срд 15:09:44 2300106938
30/09/20 Срд 15:12:14 2300108329
Чего блять какие ссылки из страниц из списка. Алсо проиграл с ФОР
Аноним 30/09/20 Срд 15:12:56 23001087010
>>230010693
спасибо! а curl + bash это возможно?
Аноним 30/09/20 Срд 15:15:43 23001103611
>>230010832
Все просто: у меня есть список страниц, например двача и я хочу вытянуть первую картинку с каждой, либо ссылку с нее.
Имеется 360к таких страниц, проблема только в скорости или однопоточности.

На данный момент с curl + bash: стандартные средства линукса все парсится около 20 часов, такое себе занятие.
Аноним 30/09/20 Срд 15:18:23 23001115812
бамп
Аноним 30/09/20 Срд 15:18:38 23001117413
бамп
30/09/20 Срд 15:19:47 23001123014
Аноним 30/09/20 Срд 15:20:28 23001126415
>>230007935 (OP)
> около одной страницы в секунду.

Это вполне нормальная скорость, учитывая то, что сервер может посчитать твои запросы ДДОС атакой и забанить твой ип.
30/09/20 Срд 15:20:28 23001126616
>>230011174
Хули ты бампаешь сколько страница одна весит, что загружено, хватит тролить
Аноним 30/09/20 Срд 15:20:54 23001128917
300к.webm 6298Кб, 640x360, 00:02:24
640x360
Аноним 30/09/20 Срд 15:21:17 23001130818
>>230011036
Я бы сделал в два этапа, сначала скачал все эти страницы на диск, операция разовая, так что пусть хоть сутки крутит, дальше уже парсер, но там можно поэкспериментировать уже, так как качать больше ничего не нужно, парсер можно накатать хоть на сишке.
Аноним 30/09/20 Срд 15:21:43 23001132619
Аноним 30/09/20 Срд 15:22:41 23001137620
>>230011266
Страница весит около 80кб, проще пропарсить чем скачать 360к таких.
Аноним 30/09/20 Срд 15:23:23 23001142521
>>230011308
>Я бы сделал в два этапа, сначала скачал все эти страницы на диск, операция разовая
подозреваю ему надо эту операцию периодически повторять в будущем. То-есть операция какразтыке не разовая будет
Аноним 30/09/20 Срд 15:23:39 23001143922
>>230011308
Дело в том, что мне еще скачать нужно то, что я получу по ссылкам.

Так что сомнительная идея качать страницы.
Аноним 30/09/20 Срд 15:24:22 23001147723
Оп, дай пример страницы и что оттуда нужно достать
Аноним 30/09/20 Срд 15:24:46 23001151124
>>230011425
Да, ты как в воду глядишь. Так и есть.

В будущем нужно повторить все это.
Аноним 30/09/20 Срд 15:24:56 23001152525
И качать страницы можно хоть в сотню потоков, так как операция io bound, по большей части происходит ожидание соединения.
30/09/20 Срд 15:25:02 23001153226
>>230007935 (OP)
>Устроился на лахту 2
>Ничего не знает
Как ты попал туда шиз?
30/09/20 Срд 15:25:35 23001156427
>>230011376
Ну это 36 гигов, это качать пару часов, что ты и так делаешь. Очевидно проблема в грепе в одном потоке, ну не знаю, раскидай по папочкам и запусти несколько, можешь греп -m 1 написать если тебе первая ссылка нужна
Аноним 30/09/20 Срд 15:26:05 23001159928
Да это шизик, который уже неделю носится с задачей скачать все картинки из диалогов вк
Там не txt, а html файлы
30/09/20 Срд 15:27:16 23001166529
30/09/20 Срд 15:27:36 23001168030
>>230011599
За неделю запилил бы давно в wrk таску с оплатой.
А я бы сделал.
Аноним 30/09/20 Срд 15:27:41 23001168531
>>230011564
Два раза 36 гигов качать при скорости 8мбит - такое себе.

После получения ссылок нужно все это еще и скачать.
Аноним 30/09/20 Срд 15:28:26 23001173532
>>230011680
Двачую
Тем более задача простецкая, за 500р любой студент это напишет
Аноним 30/09/20 Срд 15:28:34 23001174433
Аноним 30/09/20 Срд 15:30:29 23001185034
>>230007935 (OP)
при 360к страниц сайта можно было бы написать велосипед на Perl используя threads и lwp, если не существует готовых решений на Python
Аноним 30/09/20 Срд 15:31:37 23001191235
На баше ты охуеешь писать многопоточный код, он для этого не заточен
Бери язык, который умеет в многопоточность и работает с файлами напрямую без утилит
Аноним 30/09/20 Срд 15:32:44 23001197136
>>230011850
Раньше использовал Screwming Frog Seo для подобного, но на Линуксе такого нет, либо не устанавливается.
Аноним 30/09/20 Срд 15:33:17 23001200437
>>230011912
Спасибо за совет, буду иметь в виду!
Аноним 30/09/20 Срд 15:33:55 23001203538
>>230011685
Погоди. Ты что, думаешь, что ты и так эти 36 гигов не скачиваешь что ли?
Аноним 30/09/20 Срд 15:34:39 23001207039
>>230012004
Питон тот же
Там многопоточность реализовать как нехуй. Синтаксис похож на любой ЯП, даже проще баша
Аноним 30/09/20 Срд 15:34:49 23001207840
Напиши питон скрипт и распараллель. Очевидно же.
Аноним 30/09/20 Срд 15:35:28 23001211241
>>230007935 (OP)
>Мое решение на данный момент - bash + curl:
Насмехаюсь и ссу на глаза гомунитариев не могущих ни в один яп.
Аноним 30/09/20 Срд 15:40:40 23001239542
Аноним 30/09/20 Срд 15:42:05 23001247643
>>230012395
>существует ли готовое решение
Готовое для чего, ебобо?
Аноним 30/09/20 Срд 15:44:17 23001259844
>>230012476
Не коси под дурачка.

Вопрос и описание проблемы в первом посте.
Аноним 30/09/20 Срд 15:45:33 23001266545
На Go это можно написать оч быстро, плюс там пиздатые горутины для асинхронности/мультитрединга. Короч, рекомендую
Аноним 30/09/20 Срд 15:46:56 23001273846
>>230012665
Это можно написать быстро практически на любом ЯП. Задачка-то простенькая.
Аноним 30/09/20 Срд 15:47:00 23001273947
>>230012598
Дурачок тут только ты, пидрила невежливая. Для решения этой задачи аллах специально создал одного долбоеба на земле - тебя. Сиди и парси руками.
Аноним 30/09/20 Срд 15:47:26 23001276248
>>230012738
>Задачка-то простенькая.
но не для тебя
Аноним 30/09/20 Срд 15:48:17 23001282149
Аноним 30/09/20 Срд 15:48:22 23001282750
>>230012762
Для меня сложной будет любая задача, за решение которой не дают денег.
Аноним 30/09/20 Срд 15:49:44 23001292151
>>230012821
Хуя, еще и выебывается. В парсинг то ты не можешь, епта.
Аноним 30/09/20 Срд 15:50:34 23001297152
>>230012921
Мамке своей это скажи, шкет.
Аноним 30/09/20 Срд 15:51:12 23001301053
>>230012738
Простая, но есть ли готовое решение для многопоточной задачи?
Аноним 30/09/20 Срд 15:51:15 23001301454
>>230007935 (OP)
Про регулярные выражения никогда не слышал, погромист?
Аноним 30/09/20 Срд 15:52:17 23001306355
>>230007935 (OP)
М Н О Г О П О Т О К
ну и +прокси
/тхреад
Аноним 30/09/20 Срд 15:52:45 23001309856
>>230013010
Полностью готовое - вряд ли.
Батарейки для питона есть.
Аноним 30/09/20 Срд 15:53:48 23001316457
>>230013014
Если ты присмотришься, в curl уже есть grep.

Аноним 30/09/20 Срд 15:55:17 23001326258
>>230013098
Думаю должно быть, если на винде есть в лицe программы Screaming Frog - умеет перебирать страницы в многопоточности.
Аноним 30/09/20 Срд 16:01:40 23001362759
Вопрос по прежнему актуален

бамп
Аноним 30/09/20 Срд 16:03:29 23001372460
>>230013164
>Если ты присмотришься, в curl уже есть grep.
За щеку лучше себе присмотрись, додик.
Аноним 30/09/20 Срд 16:04:28 23001378361
>>230012971
>Мамке своей это скажи, шкет.
Она уже в курсе.
Аноним 30/09/20 Срд 16:08:07 23001396362
>>230013262
Есть частный софт, только хуй ты его найдешь, кто-то его вообще не продает, потому что сам пользуется
И чаще всего он узкоспециализирован, не под твои задачи
Аноним 30/09/20 Срд 16:08:31 23001398163
Бамп вопросом >>230007935 (OP)


Токсик-битардов не кормим
Аноним 30/09/20 Срд 16:10:03 23001407964
>>230013963
Да, есть такой софт, но он платный. Тот же screaming frog для линукс.
Аноним 30/09/20 Срд 16:13:44 23001432665
бамп
Аноним 30/09/20 Срд 16:17:00 23001453466
бамп
Аноним 30/09/20 Срд 16:19:06 23001465767
>>230007935 (OP)
Так, ещё раз. У тебя есть файл link.txt, в котором на каждой строке - адрес какого-то страницы. Тебе надо взять с каждой странички по данному адресу все ссылки? И ты хочешь это, например, в 10 потоков, чтоб было быстрее?
Аноним 30/09/20 Срд 16:22:41 23001487368
>>230007935 (OP)
man xargs -P, man parallel, man xjobs

> for domain in `cat link.txt`

while read doman; do ... done < link.txt
Аноним 30/09/20 Срд 16:22:49 23001488469
>>230014657
Да, все верно.

Я это уже реализовал, открыв 10 окон со скриптом в первом посте. Но нельзя ли сделать все в одно окно в те же 10 потоков?
Аноним 30/09/20 Срд 16:23:36 23001493470
Аноним 30/09/20 Срд 16:27:13 23001513471
Аноним 30/09/20 Срд 16:36:43 23001577372
>>230014884
Ну сделай что-нибудь уровня
while read url; do curl -s "$url" | grep -o 'http.*>"' & done < link.txt >> result.txt
Аноним 30/09/20 Срд 16:46:15 23001643373
>>230015773
Используя bash? Прибавил ли это скорости?
Аноним 30/09/20 Срд 16:46:31 23001645874
Аноним 30/09/20 Срд 16:56:19 23001711875
>>230016433
Да, прибавит. Символ & значит "запусти в бэкграунде".
Аноним 30/09/20 Срд 16:57:40 23001720676
Аноним 30/09/20 Срд 17:01:41 23001746777
30028887875aed0[...].jpg 56Кб, 800x431
800x431
>>230015773
Запустил эту штуку - чуть не сгорело все

Комп подавился 20к ссылками

Но результат есть, где-то за минуту 20к готовых ссылок!

Огромное спасибо:)
Аноним 30/09/20 Срд 17:27:14 23001908778
питон + urlib + гет запрос с контекстом страницы, потом грепай или регулярными выражениями вытаскивай.
Аноним 30/09/20 Срд 17:31:02 23001936879
>>230007935 (OP)
Питон+асинк+бьютифул суп+хурл. Многопоточность искоропки, асинхронное выполнение, парсилка, хур все многопоточно асинхронно качает - красота.
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов