2011-07-13 4 views
4

Je collecte des statistiques sur les applications mobiles en utilisant Python et maintenant je cherche la meilleure solution pour accéder aux données Blackberry App World. Jusqu'à présent, j'ai ma solution pour iOS (http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html) et Android (https://github.com/liato/android-market-api-py). La solution iOS utilise l'API fournie par Apple, la solution Android simule un téléphone et rassemble les données de la même manière qu'un téléphone réel le fait de manière structurée.Meilleure façon d'obtenir des données spécifiques à l'application à partir du Blackberry App World (API)

Maintenant, je n'arrive pas à trouver une solution similaire pour BlackBerry App World, alors ma question est la suivante: quelle est la meilleure solution? Je peux gratter le site, mais je préfère ne pas le faire puisque mon grattoir va se briser s'il change de site. Idéalement, j'utiliserais une API fournie ou simulerais un BlackBerry pour accéder aux données d'App World d'une manière plus structurée. Aucune suggestion?

Répondre

1

J'ai été raclant le site Web Blackberry pendant un moment et n'a pas eu de problème avec les mises à jour jusqu'à présent. Utilisez-vous des XPath absolus depuis la racine du document pour extraire des données?

Vous pouvez faire un grattoir plus robuste en utilisant XPath relatifs:

//div[@id="priceArea"]/div[@class="contentLic"] 
0

Je suis grattant le site Blackberry en utilisant WebDriver de sélénium et phantomDriver et csquery en .net pendant un certain temps et pas eu un problème avec les mises à jour à ce jour.

//Creating dynamic browser and download the page source code based on apipath by using selenium web driver  
driver = new PhantomJSDriver(phantomDriverPath); 
//driver=new ChromeDriver(chromeDriverPath); 
driver.Url = "https://appworld.blackberry.com/webstore/search/"+<search app name>+"/?lang=en&countrycode=IN"; 
driver.Navigate(); 
//Waiting for page loading 
Thread.Sleep(2000);//2 seconds 
if (driver.PageSource != null) 
{ 
    //Assigning downloaded page source code to CSQuery 
    CQ dom = CQ.CreateDocument(driver.PageSource); 
    //Waiting for page loading 
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30)); 
    //find the elements what ever you want based on the id,class name,tag name 
    string title1 =  dom["#topListtopResultsAppTemplateHTML_listItem_0_title"].Text(); 
} 
0

Je suis grattant le site Blackberry en utilisant Sélénium WebDriver et phantomDriver et CSQuery dans .NET pendant un certain temps et je ne l'ai pas eu un problème avec les mises à jour à ce jour.

//Creating dynamic browser and download the page source code 
//based on apipath by using selenium web driver 
public IWebDriver driver; 
driver = new PhantomJSDriver(phantomDriverPath); 

//driver=new ChromeDriver(chromeDriverPath); 

driver.Url = "https://appworld.blackberry.com/webstore/search/"+appname+"/lang=en&countrycode=IN"; 
driver.Navigate(); 

//Waiting for page loading Thread.Sleep(2000);//2 seconds 
if (driver.PageSource != null){ 

//Assigning downloaded page source code to CSQuery 
CQ dom = CQ.CreateDocument(driver.PageSource); 

//Waiting for page loading 
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30)); 

//find the elements what ever you want based on the id,class name,tag name 
string title1 = dom["#topListtopResultsAppTemplateHTML_listItem_0_title"].Text(); 
} 

Avant de commencer à coder, télécharger s'il vous plaît Sélénium WebDriver et pilote fantôme dans votre PC (comme C:\Users\rakesh\Documents\Selenium\PhantomJSDriver) et installez CSQuery dans votre Visual Studio.

Installer WebDriver:

Install-Package Selenium.WebDriver 

Installer PhantomJS:

Install-Package phantomjs.exe 
Questions connexes