С помощью питона выкачать сайт. Или ещё как-то.
http://www.rts-tender.ru/register/suppliers/${NNNN}где ${NNNN} — порядковый номер?
Не догадался. Не щёлкнул ни по одной. Спасибо
Даже не знаю, как такое загуглить.Если хочешь, можешь мою сишную либу заюзать:
http://github.com//multcher
Она умеет сразу жрать урлы, в том числе и в процессе скачивания. Умеет учитывать роботс.тхт, умеет "не заябывать", т.е. ты там можешь лимитировать число запросов в секунду и число параллельных. Ну и она конечно понимает редиректы и вообще, она — болванка, что хочешь из неё можешь выпилить.
Там уже готовая прога тестовая есть, могу дать ещё парсер (он не опенсорс), который ссылки будет выдавать легко.
http://www.commandlinefu.com/commands/view/901/download-an-e...
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
Очередной велосипед от пианиста
Очередной велосипедПруф или слив защитан.
Условия:
1. Качать сайты, урлы пусть заданы в файле, 100М или вообще идут потоком.
2. Сайты нельзя задрачивать, причем понятие "что есть задрачивать" — для разных сайтов разное: профили ВК если качать раз в 10 секунд, то совсем уныло будет, там можно и 10-15 в секунду качать.
3. Параллельно качать с дофига откуда, число соединений к разный айпишникам — тысячи.
4. Упереться в канал 1 гигабит и чтобы оставались ресурсы на парсинг-шмарсинг, т.е. на саму выкачку тратить минимум.
Покажешь готовое решение? Или просто сольешься?
#! /usr/bin/python -Wall
from selenium import webdriver
from time import sleep
browser = webdriver.Firefox()
browser.get("http://rts-tender.ru/register/suppliers");
f = open("page.html", "w")
f.write(browser.page_source.encode('utf8'))
f.close()
for p in range(10):
sleep(2)
nextPage = browser.find_element_by_xpath('//*[@id="dnn_ctr956_View_rptPager_lnkPage_%d"]' % int(p))
nextPage.click()
f = open("page%d.html" % int(p), "w")
f.write(browser.page_source.encode('utf8'))
f.close()
broser.close()
Конечно, код можно совершенствовать, но по крайней мере по страницам он ходит.
xpath ищется с помощью Developer Tools (во вкладке Elements).
Там на самом деле больше 10 страниц, поэтому после 10й страницы нужно будет придумывать логику как вычислять xpath следующей, но это должно быть просто.
А, да: гуглить нужно "scrape web site"
Покажешь готовое решение?aria2 - без проблем у меня качало гигабит на виртуалке по списку ~150к урлов со ~100 разных серверов. файлы были не маленькие. не умеет правда рандомные задержки перед запросами.
есть mget от одного из разработчиков вгета. ни разу не тестил, но по описанию должен уметь всё что тебе требуется кроме чтения списка урлов из потока. причём он хочет эту фичу просто руки не дошли так что проще наверное сделать ему свистелку, чем пилить свою библиотеку с нуля.
А, да: гуглить нужно "scam web site"scrape м. б?
scrape м. б?
Точно! Это меня в 2 часа ночи попутало
Там больше половины на джабе - пианист не зачтёт. И как минимум половина оставшегося не удовлетворяет его требованиям. Остальное - хз.
top-50Наебка здесь.
Ты сейчас пытаешься отмазаться, типа, вот 50 краулеров. А на мой список фичей ты смотрел?
Вот вижу я там wget чуть ни первым, а он вообще не обладает перечисленными фичами.
Вот потому ты и пиздун блаблаблашечка.
Так и родятся
А на мой список фичей ты смотрел?Это список не для краулера, а для загрузчика. По идее его может использовать как бекенд любой краулер. Если реализовывать совместимо, конечно.
Оставить комментарий
Livonika
Даже не знаю, как такое загуглить.Есть такая база http://www.rts-tender.ru/register/suppliers
На сайте разбита по страничкам по 10 записей. А мне нужна вся база. Когда щёлаешь по страничкам, то адрес не меняется. Как обратиться к определённой странице? Например, из скрипта на питоне или как-то ещё.
Вот есть ещё такая площадка http://www.roseltorg.ru/trade/suppliers-registry/
Для неё я написал скриптик на питоне, в котором генерил url с указаним номера страницы, и выкачал очень просто в цикле всё добро. А с той вообще не понимаю, как быть.