fallen_angel Posted March 19, 2014 Report Posted March 19, 2014 Trebuie s? fac un scraper care s? ia informa?ii de pe pagina asta Are cineva vreo idee cum pot s? iau textul de sub imagini( dac? exist?) ? De exemplu ”Bank approved short sale” de sub prima imagine.Problema e c? textul respectiv nu apare în sursa paginii. Cred c? e generat cu Javascript. Quote
nedo Posted March 19, 2014 Report Posted March 19, 2014 Am reusit sa fac ceva, sper doar sa poti adapta pentru ce ai tu nevoie(vezi ca incarcarea pagini cu wx.html2.WebView dureaza cateva secunde, si de asemenea implementarea webView depinde de sistemul de operare.Pe windows e implementat sa foloseasca dll-urile IEPe linux foloseste webKitGTK+Pe macos foloseste OSxWebKititi postez un mic exemplu de test(probabil are vreo 2 erori + ca ai un main loop and stuff.Pentru a putea implementa instantia webview ai nevoie de un frame parinte care sa il tina, insa nu e obligatoriu sa il si arati(cum fac eu).Output-ul de la self.brsr.GetPageText este sub forma de string, si poti face pe el, orice operatie.import wximport wx.html2import wxclass Example(wx.Frame): def __init__(self, *args, **kw): super(Example, self).__init__(*args, **kw) self.InitUI() def InitUI(self): self.brsr = wx.html2.WebView.New(self) self.brsr.LoadURL('http://www.auction.com/search?search=deltona+fl&auction_type=residential') self.Bind(wx.html2.EVT_WEBVIEW_LOADED, self.OnLoaded) def OnMove(self, e): x, y = e.GetPosition() self.st1.SetLabel(str(x)) self.st2.SetLabel(str(y)) def OnLoaded(self, e): if(not self.brsr or self.brsr.IsBusy()): return print self.brsr.GetPageText()def main(): ex = wx.App() Example(None) ex.MainLoop() if __name__ == '__main__': main() 1 Quote
fallen_angel Posted March 25, 2014 Author Report Posted March 25, 2014 Mersi nedo. E o solu?ie Între timp am g?sit o alt? metod? de rezolvare, folosind Selenium* ?i PhantomJS.from selenium import webdriverURL = 'URL_UL_DORIT'browser = webdriver.PhantomJS("phantomjs-1.9.7-windows\phantomjs.exe")browser.get(URL)html = browser.page_source.encode('utf8')browser.quit()Linia a 3-a: Constructorul de la PhantomJS trebuie s? primeasc? path-ul c?tre binarul PhantomJS pe care îl downloada?i de pe site sau dac? sunte?i pe Linux**, îl g?si?i în repository (cel pu?in pe Ubuntu).*Selenium se instaleaz? cu pip install selenium .**Evident path-ul transmis în constructor trebuie modificat. Parc? "/usr/bin/phantomjs" e dac? bine îmi aduc aminte. Quote