Что нового

wolframalpha способы работы+парсинг

Arei

Скриптер
Сообщения
938
Репутация
115
Здравствуйте, посоветуйте как лучше получать информацию с сайта http://www.wolframalpha.com/ по блокам.Желательно для получения картинок и текста.Использую для решения задач. :smile:
Заранее спасибо.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Arei,
А какую информацию надо получить?
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Например при вводе
Код:
x^2 =25
он выводит ответы, их и надо получать,но там картинки есть и текст, вот с этим и проблемы.А Input: это название блока.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Забыл сказать,что понимает английский язык и цифры, перейти можно таким способом.
http://www.wolframalpha.com/input/?i=x^2=25
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Arei,
Без проверок на ошибки:
Код:
#include <IE.au3>
#include <Array.au3>

$iCount = 0
$sString = 'x^2=25'
$sUrl = 'http://www.wolframalpha.com/input/?i='
$oIE = _IECreate($sUrl & $sString)

$oImgs = _IEImgGetCollection($oIE)
If @extended Then
	Dim $aSRC[@extended + 1][2]
	For $oImg In $oImgs
		If StringInStr($oImg.id, 'i_') Then
			$iCount += 1
			$aSRC[$iCount][0] = $oImg.src
			;$aSRC[$iCount][1] = StringRegExpReplace($aSRC[$iCount][0], '.*MSP/(.*?)\?MSP.*', '$1.gif')
			$aSRC[$iCount][1] = $iCount & '.gif'
		EndIf
	Next
	If $iCount Then
		ReDim $aSRC[$iCount + 1][2]
		$aSRC[0][0] = $iCount
		_ArrayDisplay($aSRC)
		For $i = 1 To $aSRC[0][0]
			$hDownload = InetGet($aSRC[$i][0], @ScriptDir & '\' & $aSRC[$i][1], 1, 1)
			Do
				Sleep(10)
			Until InetGetInfo($hDownload, 2)
			InetClose($hDownload)
		Next
	EndIf
EndIf
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
огромное спасибо,но как получить название блоков?
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Названия блоков пишутся вверху например для того запроса где график, написано Plot:,и ещё он не только картинки даёт но и если есть возможность то текст, его можно увидеть если навести на угол блока(отдела) и нажать кнопку copyable plaintextт.е он вместо текста выдаёт картинку, а текст там лежит.Вот я и незнаю как отлечать текст нормальный от картинки.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
OffTopic:
ё моё там какие то функции и из них как я понял вытащить текст нельзя.Т.к они создаются каждый раз другие.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Arei,
Корявенько, но кое-что вытаскивает.
Код:
#include <IE.au3>
#include <Array.au3>

$iCount = 0
$sString = 'x^2=25'
$sUrl = 'http://www.wolframalpha.com/input/?i='
$oIE = _IECreate($sUrl & $sString)
$oDivs = _IETagNameGetCollection($oIE, 'div')
Dim $aResult[@extended + 10][3]
For $oDiv In $oDivs
	If StringRegExp($oDiv.id, '^pod_') Then
		$iCount += 1
		$oH2 = _IETagNameGetCollection($oDiv, 'h2', 0)
		$aResult[$iCount][0] = $oH2.innertext
		$oIMG = _IETagNameGetCollection($oDiv, 'img', 0)
		$aResult[$iCount][1] = $oIMG.src
		$aResult[$iCount][2] = $oIMG.alt
		$oIMG = _IETagNameGetCollection($oDiv, 'img')
		If @extended = 2 Then
			$iCount += 1
			$oIMG = _IETagNameGetCollection($oDiv, 'img', 1)
			$aResult[$iCount][1] = $oIMG.src
			$aResult[$iCount][2] = $oIMG.alt
		EndIf
	EndIf
Next
If $iCount Then
	ReDim $aResult[$iCount + 1][3]
	$aResult[0][0] = $iCount
	_ArrayDisplay($aResult)
	For $i = 1 To $aResult[0][0]
		If Not $aResult[$i][1] Then ContinueLoop
		$hDownload = InetGet($aResult[$i][1], @ScriptDir & '\' & $i & '.gif', 1, 1)
		Do
			Sleep(10)
		Until InetGetInfo($hDownload, 2)
		InetClose($hDownload)
	Next
Else
	MsgBox(16, 'Error', 'Error')
EndIf
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
только ошибку выдаёт
Код:
$aResult[$iCount][0] = $oH2.innertext
$aResult[$iCount][0] = $oH2^ ERROR



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

IE9
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
я помню,кто нибудь протестируйте на 7.


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

не надо Shell.Explorer.2 помог, спасибо большое.
 
Верх