@srb-site
WEB-программист

Как наиболее просто собрать кучу ссылок с сайта?

Подскажите, пожалуйста, дико нетребовательный к ресурсам парсер сайта на php. Задача примитивная донельзя, нужно собрать с интернет-магазина ссылки на товары и описания к ним. Делаю это не для воровства контента, а для создания XML-файла для Regmarkets.

Вообще, успешно делал такое с помощью simple_html_dom но на другом компе. Сейчас в распоряжении только мега-слабая и старая машина, в результате чего библиотека пытается что-нибудь сделать в течение минут пяти и безрезультатно. "Затык" происходит на этапе разбора кода и поиска в нем нужных тегов. Пробовал на Денвер и OpenServer, от сервера не зависит.

Возможно стоит написать с нуля, но, парсеры никогда не делал и, наверное, быстрее использовать готовое решение, но оно должно быть каким-то очень простейшим. Надо: получить из каталога ссылки на товары, сходить по каждой ссылке и взять там описание из нужного div-а, сохранить это все в excel.
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Kirill-Gorelov
С ума с IT
Не знаю. Я наоборот ни разу не использовал simple_html_dom. А пишу все на регулярках. Мне очень удобно и быстро работает.
Ответ написан
Комментировать
@Eugeny1987
Работаю с HostCMS
Content Downloader хорошо парсит
Ссылки получаете из карты сайта
Ответ написан
Комментировать
Если надо сохранить это все в excel и на локальной машине, то я бы делал это прямо инструментами excel
С помощью инструмента WinHttp.WinHttpRequest.5.1 получаем данные страницы
spoiler
'---------------------------------------------------------------------------------------
' Purpose   : Стучимся в сервер за результатами
'---------------------------------------------------------------------------------------
' sQuery - строка запроса
' sResponse - ответ, передается по ссылке
Function Runhttp(sQuery As String, ByRef sResponse As String) As Boolean
   On Error GoTo ErrorHandler
   Dim oHttp As Object
   Dim s$, h$, FileName As String
   Dim v As Variant
   Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
   
   
   With oHttp
      .Open "GET",  sQuery, False
      .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.137 YaBrowser/17.4.1.955 Yowser/2.5 Safari/537.36"
      .SetRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
      .SetRequestHeader "Accept-Language", "uk,ru;q=0.8,en;q=0.6"
      .SetRequestHeader "Connection", "keep-alive"
      
      .Send ("")
      
   End With
   
   If oHttp.Status = 200 Then
      sResponse = oHttp.responseText
      Runhttp = True
   Else
      sResponse = oHttp.Status
      Runhttp = False
   End If
   
   
ErrorExit:
   Set oHttp = Nothing
   On Error GoTo 0: Exit Function
ErrorHandler:
   If Err.Number = -2147012889 Then    ' Ошибка нет соединения
   End If
End Function


в результате в sResponse имеем полностью html запрошенной страницы
Далее проводим разбор. Я бы порекомендовал код отсюда Работа с HTML

Ну и дальше пишите себе ссылки или что вы там распарсите прямо в лист Excel

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

Есть одно предостережение, если ОС Windows XP и ниже, то не все https читаются. Http читается легко, https - только версии 1.1 . Это проблема ОС.

С Ув. Анатолий
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы