Лучший способ получить специфичные для приложения данные из Blackberry App World (API) - PullRequest
4 голосов
/ 13 июля 2011

Я собираю статистику о мобильных приложениях, использующих Python, и сейчас я ищу лучшее решение для доступа к данным Blackberry App World.

Пока у меня есть мое решение для iOS (http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html) и Android (https://github.com/liato/android-market-api-py).) Решение iOS использует API, предоставленный Apple, решение Android имитирует телефон и собирает данные только как реальный телефон делает это структурированным способом.

Теперь я не могу найти похожее решение для BlackBerry App World, поэтому мой вопрос: каков наилучший путь? Я могу поцарапать сайт, но лучше не делать этого, так как мой скребок сломается, если они поменяют свой сайт. В идеале я бы использовал предоставленный API или симуляцию BlackBerry для доступа к данным App World более структурированным способом. Есть предложения?

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Некоторое время я просматривал сайт Blackberry и до сих пор не имел проблем с обновлениями.

Используете ли вы абсолютные XPath из корня документа для извлечения данных? Вы можете сделать более надежный скребок, используя относительные XPath:

//div[@id="priceArea"]/div[@class="contentLic"]
0 голосов
/ 04 апреля 2016

Я просматривал сайт Blackberry, используя Selenium WebDriver и phantomDriver и CSQuery в .NET , и у меня не было проблем с пока обновлений.

//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();
 }

Перед тем, как приступить к написанию кода, пожалуйста, загрузите Selenium WebDriver и драйвер фантома на свой ПК (например, C:\Users\rakesh\Documents\Selenium\PhantomJSDriver) и установите CSQuery в Visual Studio.

Установить веб-драйвер:

Install-Package Selenium.WebDriver

Установить фантоми:

Install-Package phantomjs.exe
0 голосов
/ 04 апреля 2016

Я некоторое время чистил веб-сайт Blackberry, используя selenium webdriver, phantomDriver и csquery в .net, и до сих пор не имел проблем с обновлениями.

//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();
}
...