2014-12-01 3 views
0

Я пытаюсь очистить html-элементы URL-адреса, хранящиеся в searchlink. Единственный метод, который работал для меня, - htmlTreeParse {XML}. Однако он не возвращает элементы, которые я ищу. Пример: img[@title='Add to compare']GET {httr} возвращает ответ с плохим запросом

searchlink <- "http://www.realtor.ca/Map.aspx#CultureId=1&ApplicationId=1&RecordsPerPage=9&MaximumResults=9&PropertyTypeId=300&TransactionTypeId=2&SortOrder=A&SortBy=1&LongitudeMin=-114.52066040039104&LongitudeMax=-113.60536193847697&LatitudeMin=50.94776904194829&LatitudeMax=51.14246522072541&PriceMin=0&PriceMax=0&BedRange=0-0&BathRange=0-0&ParkingSpaceRange=0-0&viewState=m&Longitude=-114.063011169434&Latitude=51.0452194213867&ZoomLevel=11&CurrentPage=1" 

doc <- htmlTreeParse(searchlink,useInternalNodes = T) 


    classes <- xpathSApply(doc,"//img[@title='Add to compare']",function(x){xmlGetAttr(x,'class')}) 

результат выполнения классов выше:

list() 

Я также попытался readLines и GET {HTTR}, но они оба вернулись ошибку в чтении URL. Я предполагаю, что это из-за специальных символов в URL-адресе, но не знаю, как это исправить. Ответ приведен ниже:

Response [http://www.realtor.ca/Map.aspx#CultureId=1&ApplicationId=1&RecordsPerPage=9&MaximumResults=9&PropertyTypeId=300&TransactionTypeId=2&SortOrder=A&SortBy=1&LongitudeMin=-114.52066040039104&LongitudeMax=-113.60536193847697&LatitudeMin=50.94776904194829&LatitudeMax=51.14246522072541&PriceMin=0&PriceMax=0&BedRange=0-0&BathRange=0-0&ParkingSpaceRange=0-0&viewState=m&Longitude=-114.063011169434&Latitude=51.0452194213867&ZoomLevel=11&CurrentPage=1] 
    Date: 2014-12-01 16:46 
    Status: 400 
    Content-type: text/html; charset=us-ascii 
    Size: 324 B 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> 
<HTML><HEAD><TITLE>Bad Request</TITLE> 
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD> 
<BODY><h2>Bad Request - Invalid URL</h2> 
<hr><p>HTTP Error 400. The request URL is invalid.</p> 
</BODY></HTML> 

ответ

1

Попробуйте удалить один # в URL, я просто заменен ?

library("httr") 
url <- "http://www.realtor.ca/Map.aspx?CultureId=1&ApplicationId=1&RecordsPerPage=9&MaximumResults=9&PropertyTypeId=300&TransactionTypeId=2&SortOrder=A&SortBy=1&LongitudeMin=-114.52066040039104&LongitudeMax=-113.60536193847697&LatitudeMin=50.94776904194829&LatitudeMax=51.14246522072541&PriceMin=0&PriceMax=0&BedRange=0-0&BathRange=0-0&ParkingSpaceRange=0-0&viewState=m&Longitude=-114.063011169434&Latitude=51.0452194213867&ZoomLevel=11&CurrentPage=1" 
res <- GET(url) 
tt <- content(res) 

затем анализировать содержимое HTML в tt

+0

Спасибо Скотт он работал !! но я все еще не могу извлечь элементы html, которые мне нужны. Я пытаюсь проанализировать атрибуты всех кнопок «добавить к сравнению» на этой веб-странице. Я пробовал «xpathSApply (tt», // img [@ title = 'Добавить для сравнения'] ", function (x) {xmlGetAttr (x, 'class')})', но возвращает NULL. Я не уверен, где проблема. Есть идеи? –

+0

если вы делаете 'xpathSApply (tt," // img [@title] ", xmlGetAttr, name =" title ")' Я не вижу никакого заголовка с атрибутами с 'Add to compare' – sckott

+0

, поэтому это странно потому что, если вы проверите элемент на веб-странице, вы увидите следующее: 'Add to compare'. поэтому по некоторым причинам при чтении html кажется, что весь html-код не очищается. –

Смежные вопросы