Что нового

Скопировать текст из страницы сайта в файл.txt

Ivanov

Незнайка на autoit
Сообщения
13
Репутация
0
Необходимо скопировать текст новости, а у меня что-то не выходит. Посдкажите, пожалуйста, что я делаю не так? Или не по тому пути пошел. Есть ли другой вариант решения?
Код:
#include <IE.au3>
#include <file.au3> 
$IE = _IECreate("http://stomaster.livejournal.com/3280399.html")
_IELoadWait($IE) 
$elements = _IETagNameGetCollection($IE, "div")
$index = 1
For $elem In $elements
	if StringInStr($elem.attributes.getNamedItem('class' ).nodeValue, 'entry-content') Then
        if $index>3 Then
		$a = _IETagNameGetCollection($elem, "div")
		For $elem1 In $a
			MsgBox(0,$index,$elem1.innertext)

			Next
			EndIf
$index += 1
		EndIf
	Next
$elements = _IETagNameGetCollection($IE, "div")
$I = 0
For $elem In $elements
	if $I = 1 Then
		MsgBox(0,$I,$elem.innertext)
		_FileWriteLog(@ScriptDir & "\text.txt", $elem.innertext)
	EndIf
	
$I +=1
Next
 

erlik

Продвинутый
Сообщения
317
Репутация
84
Другой вариант :smile:
Код:
$sUrl= 'http://stomaster.livejournal.com/3280399.html'
$oIE = ObjCreate("InternetExplorer.Application")               ; _IECreate($sUrl)
$oIE.visible = 1                                               ; делаем окно видимым
$oIE.navigate($sUrl)                                           ; переходим по ссылке
While $oIE.Busy                                                ;_IELoadWait($oIE)     ; ждем окончания загрузки
    Sleep(200)
Wend
$sText = $oIE.document.getElementsByClassName('entry-content').item(0).InnerText
ConsoleWrite('$sText:' & $sText)
 
Автор
I

Ivanov

Незнайка на autoit
Сообщения
13
Репутация
0
erlik Спасибо! Страница загружается, но текст не копируется в файл.



Добавлено:
Сообщение автоматически объединено:

Чтобы скопировать заголовок страницы, написал вот так:

Код:
#include <IE.au3>  ; добовляется библиотека для работы с браузером
#include <file.au3> ; добавляется библиотека для работы с файлами
$IE = _IECreate('http://stomaster.livejournal.com/3280399.html', 0, 0) ; создание объекта браузера и присвоение переменной $IE
_IELoadWait($IE) ; ожидание загрузки
sleep(3000) ; ждать 3 сек на случай асинхронного построения
$elements = _IETagNameGetCollection($IE, "dt")
$index = 1
For $elem In $elements
	if StringInStr($elem.attributes.getNamedItem('class' ).nodeValue, 'entry-title') Then
        if $index>3 Then
		$a = _IETagNameGetCollection($elem, "/title")
		For $elem1 In $a
			MsgBox(0,$index,$elem1.innertext)

			Next
			EndIf
$index += 1
		EndIf
	Next
$elements = _IETagNameGetCollection($IE, "dt")
$I = 0
For $elem In $elements
	if $I = 1 Then
		MsgBox(0,$I,$elem.innertext)
		_FileWriteLog(@ScriptDir & "\title.txt", $elem.innertext)
	EndIf
$I +=1
Next


Текст копируется в файл. Единственно, что мне ненравится, что добавляет перед загловком время копирования: 2014-04-13 01:48:38 : В Таллине тоже прохошел митинг. А как скопировать текст самой новости?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ivanov сказал(а):
текст не копируется в файл.
Потому что в коде он копируется в консоль, а не в файл...
Добавь функцию
Код:
_FileWriteLog(@ScriptDir & "\text.txt", $sText)

Вот мой вариант:
Код:
#include <IE.au3>
#include <file.au3>
$sUrl= 'http://stomaster.livejournal.com/3280399.html'
$oIE = _IECreate($sUrl, 0, 1, 0)
_IELoadWaitTimeout(5000)
_IELoadWait($oIE)

;~     $sText = $oIE.document.getElementsByClassName('entry-content').item(0).InnerText

$sText = ""
$elems = _IETagNameGetCollection($oIE, "div")
If IsObj($elems) Then
For $elem In $elems
If StringInStr($elem.className, "entry-content") Then
$sText = $elem.innerTEXT
ExitLoop
EndIf
Next
EndIf
MsgBox(0, "text", $sText)
_FileWriteLog(@ScriptDir & "\text.txt", $sText)
 
Автор
I

Ivanov

Незнайка на autoit
Сообщения
13
Репутация
0
alex33 а тогда подскажите, пожалуста, чтобы затем текст бросить в форму другого сайта это проще сделать из консоли или из текстового файла?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ivanov, если текст нужно сохранить, а потом через какое-то время прочитать то записывай в файл.
А так этот текст после получения находится в переменной $sText и с ним можно делать всё что угодно.
Занести в форму другого сайта можно например через функцию
Код:
_IEFormElementSetValue
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Ivanov [?]
Необходимо скопировать текст новости
[?]
но текст не копируется в файл
[?]
текст бросить в форму другого сайта

Код:
#include<IE.au3>

$iID = 3280399

$oIE = _IECreate('http://stomaster.livejournal.com/'& $iID &'.html')
$oDIV = _IEGetObjById($oIE, 'post-stomaster-' & $iID)
$oDIV.childNodes.item(2).removeChild($oDIV.childNodes.item(2).firstChild)
;~ Сохраняем текст новости.
$sData = StringStripWS(_IEPropertyGet($oDIV, 'innerText'), 3)

FileWrite($iID & '.txt', $sData)

;~ _IENavigate($oIE, 'адрес сайта в форму которого надо вставить текст')
;~ Далее получаем объект "форма"
;~ и делаем с ним всё что захотим.

_IEQuit($oIE)
 
Верх