Что нового

Как выхватить текст с anekdotov.net и поместить его в текстовый файл

Бонифаций

Новичок
Сообщения
19
Репутация
0
Здравствуйте.
Есть такой сайт anekdotov.net.

Как скриптом autoit - выхватить с этого сайта - случайный анекдот со случайной страницы и поместить его в текстовый файл txt, лежащий рядом со скриптом ?
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
:smile:
Код:
#include <Array.au3>
#include <INet.au3>

Dim $aUrls[28][3] = [ ["http://anekdotov.net/anekdot/today.html", "<div align=justify>", "</div"], _
					 ["http://anekdotov.net/anekdot/", '<A NAME="\d+"></A>', "</div"], _
					 ["http://anekdotov.net/anekdot/day/", "</b></font>: ", "<table width"], _
					 ["http://anekdotov.net/anekdot/week/", "<b>\d+ место:</b>", "<table width"], _
					 ["http://anekdotov.net/anekdot/month/", "<b>\d+ место:</b>", "<table width"], _
					 ["http://anekdotov.net/anekdot/blonde/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/vk/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/vovochka/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/gai/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/today/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/intim/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anwar/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/med/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/ancomp/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/crime/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/narkom/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/naci/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/nr/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/porut/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/family/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/skazka/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/sms/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/1001/", "<p align=left>\d+\. ", "<table width"], _
					 ["http://anekdotov.net/anekdot/student/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/chapai/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/black/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/boroda/", "<p align=left>", "<table width"], _
					 ["http://anekdotov.net/anekdot/other/", "<p align=left>", "<table width"] _
				  ]			; Массив ссылок, начало и конец анекдотов на каждой из страниц

_WriteToFile()

Func _WriteToFile($sFileName = @ScriptDir & '\Result.txt')
   Local $iRand = Random(0, UBound($aUrls) - 1, 1)										; Страница, с которой будем брать случайный текст
   Local $sHTML = _INetGetSource($aUrls[$iRand][0], True)								; Читаем в переменную исходник страницы
   If @error Then Exit MsgBox(4096, "", "Ошибка чтения страницы " & $aUrls[$iRand][0])
   Local $aList = StringRegExp($sHTML, '(?s)' & $aUrls[$iRand][1] & '(.+?)' & $aUrls[$iRand][2], 3)	; Массив анекдотов
   ;_ArrayDisplay($aList)

   $iRand = Random(0, UBound($aList) - 1, 1)										; Индекс случайного анекдота
   $aList[$iRand] = StringReplace($aList[$iRand], "&mdash;", '—')
   $aList[$iRand] = StringReplace($aList[$iRand], "
", @CRLF)
   $aList[$iRand] = StringReplace($aList[$iRand], "&#39;&#39;", '"')
   $aList[$iRand] = StringRegExpReplace($aList[$iRand], "(?s)(<.+?>)", "")			; Несколько замен в коде страницы

   FileDelete($sFileName)
   FileWrite($sFileName, $aList[$iRand])											; Записываем в указанный файл
   ConsoleWrite($aList[$iRand] & @CRLF & '------------------' & @CRLF)
EndFunc
 

alex-evpa

Новичок
Сообщения
7
Репутация
0
А как тоже самое только без рандома ? Брать все допутим все анекдоты с первой страницы копировать в блокнот, потом со второй страницы и копировать в конец блокнота и так далее ?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Замените случайную вырезку типа "$iRand = Random(0, UBound($aList) - 1, 1) " Циклическим перебором всего массива
Код:
For $i=0 to UBound($aList) - 1
;Дальше все действия с элементами массива, как в исходном файле
Next
 

alex-evpa

Новичок
Сообщения
7
Репутация
0
Ну это мы заменили индекс случайного анекдота, теперь нужно тоже самое сделать и с ссылками ?)
Вставлял в код.. выдает ошибку (((
Можете показать в коде целиком ?(
Уж извините за возможно глупые вопросы, но с Auto It на ВЫ ))
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Код:
#include <Array.au3>
#include <INet.au3>

Dim $aUrls[28][3] = [ ["http://anekdotov.net/anekdot/today.html", "<div align=justify>", "</div"], _
                     ["http://anekdotov.net/anekdot/", '<A NAME="\d+"></A>', "</div"], _
                     ["http://anekdotov.net/anekdot/day/", "</b></font>: ", "<table width"], _
                     ["http://anekdotov.net/anekdot/week/", "<b>\d+ место:</b>", "<table width"], _
                     ["http://anekdotov.net/anekdot/month/", "<b>\d+ место:</b>", "<table width"], _
                     ["http://anekdotov.net/anekdot/blonde/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/vk/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/vovochka/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/gai/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/today/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/intim/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anwar/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/med/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/ancomp/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/crime/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/narkom/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/naci/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/nr/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/porut/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/family/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/skazka/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/sms/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/1001/", "<p align=left>\d+\. ", "<table width"], _
                     ["http://anekdotov.net/anekdot/student/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/chapai/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/black/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/boroda/", "<p align=left>", "<table width"], _
                     ["http://anekdotov.net/anekdot/other/", "<p align=left>", "<table width"] _
                  ]         ; Массив ссылок, начало и конец анекдотов на каждой из страниц

; $sFileName = 'result.txt' ; Раскомментируйте строку, чтобы писать все в один файл

For $iNum = 0 To UBound($aUrls) -1
   Local $sHTML = _INetGetSource($aUrls[$iNum][0], True)                               ; Читаем в переменную исходник страницы
   If @error Then Exit MsgBox(4096, "", "Ошибка чтения страницы " & $aUrls[$iNum][0])
   Local $aList = StringRegExp($sHTML, '(?s)' & $aUrls[$iNum][1] & '(.+?)' & $aUrls[$iNum][2], 3) ; Массив анекдотов
   $sFileName = $iNum & '.txt' ; Закомментируйте строку, чтобы писать все в один файл

   ConsoleWrite('Загрузили страницу #' & $iNum + 1 & @CRLF)

   For $sAnek In $aList
	  $sAnek = StringReplace($sAnek, "&mdash;", '—')
	  $sAnek = StringReplace($sAnek, "
", @CRLF)
	  $sAnek = StringReplace($sAnek, "&#38;#39;&#38;#39;", '"')
	  $sAnek = StringRegExpReplace($sAnek, "(?s)(<.+?>)", "")          		; Несколько замен в коде страницы
	  FileWrite($sFileName, $sAnek & @CRLF & '------------------' & @CRLF)  ; Записываем в указанный файл
   Next

   ConsoleWrite('Записано: ' & UBound($aList) & @CRLF)
Next
 
Верх