Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как или чем можно граббить новости с сайта? (http://forum.oszone.net/showthread.php?t=325899)

dislike 13-04-2017 07:36 2728861

Как или чем можно граббить новости с сайта?
 
Помогите, пожалуйста с таким вопросом. Есть сайты, на которых регулярно выкладываются новости (сайты различных министерств). Нужно эти новости с них забирать и складывать в простой текстовый файл, ну например вордовский. Чем можно решить эту задачу? У меня просто вообще нет никакого опыта, не знаю даже с какой стороны подступиться.

mwz 13-04-2017 10:23 2728891

Цитата:

Цитата dislike
в простой текстовый файл, ну например вордовский »

"Простой текстовый" (открывающийся хоть в Блокноте, хоть в чём) и "вордовский" — существенно разные вещи.
Со вторым замучаетесь.

dislike 13-04-2017 10:37 2728893

Подскажите хоть как-нибудь, хоть в Блокнот, хоть в куда, я не привередничаю.

freese 13-04-2017 11:50 2728918

dislike, ну у самих сайтов наверное есть RSS? Есть программы для чтения RSS наподобии RSSOwl, в большенстве програм есть возможность сохранять новости, ну а про автоматизацию вы ничего не написали, значит не нужна...

dislike 13-04-2017 12:08 2728922

Цитата:

Цитата freese
ну а про автоматизацию вы ничего не написали, значит не нужна... »

Нужна. Просто мне само собой казалось это очевидным, потому что жаль человека который будет по тысяче раз в день жать ctrl+c, ctrl+v и т.д. У него руки опухнуть через неделю.
Для RSS ставил FeedDemon, естественно никакой автоматизации в нём не нашел. Даже тупо экспорта в ворд нет (зато в Эксель есть :biggrin: )

mrcnn 13-04-2017 16:59 2728999

php + vbs

lxa85 13-04-2017 17:56 2729009

dislike, При всем моем, сейчас ваша хотелка выглядит как просьба найти кнопку "Сделать зашибись!".
Сайты "различных" министерств работают кто на чем и как только не выкладывают информацию.
Поэтому пока они абстрактно "различные", то разговор получается не о чем.
Пишите конкретные сайты, и что во что складывать.
Плюс желательно опыт пользователей и их способность решать офисные задачи (например "открыть файл с помощью")

dislike 14-04-2017 16:57 2729289

Я не специально, я правда не знаю на какой козе подъехать к этой задаче. Всё что мне удавалось найти, сводилось к граббингу информации с одного сайта сразу на свой сайт, соответственно требуется 1) иметь свой сайт 2) встраивать в него код граббера, а это ну совершенно не то, что хочется.

Сайт для примера такой: agro.tatarstan.ru

Цитата:

Цитата lxa85
и что во что складывать. »

Я ж сказал: текст новостей в идеале в ворд. Но и txt сойдет.

Iska 14-04-2017 21:16 2729372

dislike, вариантов масса. Всё зависит от того, что на самом деле Вам нужно, в каком именно виде. С какой периодичностью делать запросы. Надо ли отслеживать состояние, дабы не было дублирования информации при запросах. И т.д.

В общем виде это может быть любое средство, умеющее работать с xml.
LogParser
Код:

"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT title, link, description, pubDate, yandex:full-text INTO DATAGRID FROM 'http://agro.tatarstan.ru/rss/agro.xml#/rss/channel/item'" -i:XML -fMode:Tree


Можно, разумеется, делать вывод не токмо в Grid, но и в текстовый документ, и в CSV.

VBScript
Код:

Option Explicit

Dim strUrl

Dim objDOMDocument
Dim objXMLDOMElement
Dim objXMLDOMSelection

Dim objWord


strUrl = "http://agro.tatarstan.ru/rss/agro.xml"

Set objDOMDocument = WScript.CreateObject("Microsoft.XMLDOM")

objDOMDocument.async = False

If objDOMDocument.load(strUrl) Then
        Set objXMLDOMSelection = objDOMDocument.selectNodes("/rss/channel/item")
       
        If Not objXMLDOMSelection Is Nothing Then
                        Set objWord = WScript.CreateObject("Word.Application")
                       
                        With objWord.Documents.Add()
                                For Each objXMLDOMElement In objXMLDOMSelection
                                        With .Range
                                                .InsertAfter objXMLDOMElement.selectSingleNode("title").text & vbLf
                                                .InsertAfter objXMLDOMElement.selectSingleNode("link").text & vbLf
                                                .InsertAfter objXMLDOMElement.selectSingleNode("description").text & vbLf
                                                .InsertAfter objXMLDOMElement.selectSingleNode("pubDate").text & vbLf
                                                .InsertAfter objXMLDOMElement.selectSingleNode("yandex:full-text").text & vbLf
                                                .InsertAfter vbLf
                                        End With
                                Next
                        End With
                       
                        objWord.Visible = True
                        'objWord.Quit
                        Set objWord = Nothing
        Else
                WScript.Echo "Can't parse RSS from [" & strUrl & "]."
                WScript.Quit 2
        End If
       
        Set objXMLDOMSelection = Nothing
Else
        WScript.Echo "Can't load RSS from [" & strUrl & "]."
        WScript.Quit 1
End If

WScript.Quit 0



Точно так же это может быть PowerShell, AutoIt, VB/VBA/VB.net, всяческие С/С++ и т.п.

В любом случае, мне лично ни текстовый документ, ни Word в качестве основы вывода не нравятся. Жду Вашего ответа на вопросы.

dislike 14-04-2017 23:10 2729399

Цитата:

Цитата Iska
что на самом деле Вам нужно, в каком именно виде. »

Как вы понимаете, нужно не совсем мне, но повесили на меня))) Нужно скорее всего как на последней картинке: документ ворд, заголовок новости, мясо новости. Возможно ещё понадобится картинка-иллюстрация оттуда же. Иногда картинка бывает не одна. Какими бы разными ни были министерские сайты, новости они выкладывают по одинаковому шаблону видимо.

Цитата:

Цитата Iska
С какой периодичностью делать запросы. »

Я думаю, вручную, примерно раз в сутки.

Цитата:

Цитата Iska
Надо ли отслеживать состояние, дабы не было дублирования информации при запросах. »

Я об этом как-то не подумал. Думаю, логичнее всего брать примерно 5 последних новостей, распихивать их каждую в свой файл, и если возможно сохранять в отдельную папку с соответствующей датой/временем

Iska 14-04-2017 23:37 2729407

Цитата:

Цитата dislike
Как вы понимаете, нужно не совсем мне, но повесили на меня))) »

Понимаю :). «Тыжпрограммист»™.


Так что они хотят с этим документом Word потом делать? Мне нужно понять — глобальная цель их какова? Я пока этого понять не могу, особенно учитывая:
Цитата:

Цитата dislike
каждую в свой файл »

— зачем?!

Цитата:

Цитата dislike
Какими бы разными ни были министерские сайты, новости они выкладывают по одинаковому шаблону видимо. »

Не совсем так. Есть худо-бедно отраслевые стандарты на RSS, не более. А внутри могут быть заметные отличия.

dislike 15-04-2017 06:50 2729449

Цитата:

Цитата Iska
Так что они хотят с этим документом Word потом делать? Мне нужно понять — глобальная цель их какова? Я пока этого понять не могу »

Есть человек, редактор, занимается подготовкой агрообзоров (дайджестов новостей). Из них он формирует ленту, разбитую по уровням новостей (федеральный-окружной-региональный) и по разделам Животноводство, растениеводство и т.п.
Если нужно, пример

Цитата:

Цитата Iska
каждую в свой файл »
— зачем?! »

Ну а как ещё организовать подачу информации пользователю? Допустим, он захочет ограбить 3-4-5 сайтов,
с каждого прилетит по 5 новостей, в каждой новости окажется по 5 картинок. Всё это запихнуть в один файл? Как минимум ему нужно будет четкое разделение, с какого сайта что прилетело.

Iska 16-04-2017 16:54 2729837

Цитата:

Цитата dislike
Есть человек, редактор, …»

«Мопед не мой…»™ ;)?


Цитата:

Цитата dislike
Если нужно, пример »

Общий принцип понятен. Вот токмо никаких изображений я там в принципе не вижу. Заголовок, текст, и иногда кривая гиперссылка на источник.

Цитата:

Цитата dislike
ему нужно будет четкое разделение, с какого сайта что прилетело. »

Ясно. Просто ранее по тексту было сказано другое (расширю цитирование):
Цитата:

Цитата dislike
Думаю, логичнее всего брать примерно 5 последних новостей, распихивать их каждую в свой файл »

— каждую новость в отдельный файл. Нынешний же вариант вполне логичен.


Время: 22:42.

Время: 22:42.
© OSzone.net 2001-