2015-06-20 5 views
-12

Можно ли получить определенные значения из URL-адреса и сохранить их в csv?Извлечь значения из веб-страниц

У меня есть текстовые файлы с одного столбца с URLs как этот

я пытаюсь сделать, чтобы собрать такие ценности, как стоимость вознаграждения и количества сторонников. Конечный файл должен иметь два столбца, как в следующем

10,15,30,50  17,9,9 
+0

У них нет публичного API, поэтому вам придется его очистить. – ceejayoz

+0

@ceejayoz пожалуйста, если возможно, не могли бы вы привести мне пример? – angs

+6

Downvote for "не показывает никаких исследований". Вы искали помощь в этом, потому что там много. Попробуйте просмотреть представление R Web Technologies (google для этого, если вы не знаете, что это такое). – Spacedman

ответ

6

Вот решение, используя rvest пакет:

library(rvest) 
url.parse<-read_html("https://www.kickstarter.com/projects/1154444340/god-in-new-york/description") 

reward<-url.parse%>% 
html_nodes("h5")%>% 
html_text(trim=TRUE) 
reward 
[1] "$10 reward" "$15 reward" "$30 reward" "$50 reward" 

backers<-url.parse%>% 
html_nodes("span.num-backers.mr1")%>% 
html_text(trim=TRUE) 

backers 
[1] "17 backers" "9 backers" "9 backers" "30 backers" 

Если вы хотите, как в одном dataframe:

df1<-data.frame(do.call(cbind,lapply(c("span.num-backers.mr1","h5"), 
        function(i) { 
         url.parse %>% 
          html_nodes(i) %>% 
          html_text(trim=TRUE) 
        }))) 
df1 

    X1   X2 
1 17 backers $10 reward 
2 9 backers $15 reward 
3 9 backers $30 reward 
4 30 backers $50 reward 

Если у вас есть список URL-адресов, вы можете действовать следующим образом:

url_kick<-c("https://www.kickstarter.com/projects/1154444340/god-in-new-york/description","https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured") 
data.frame(do.call(rbind,lapply(url_kick,function(url_name){ 
    kk<-data.frame(do.call(cbind,lapply(c("span.num-backers.mr1","h5"), 
             function(i) { 
              read_html(url_name) %>% 
               html_nodes(i) %>% 
               html_text(trim=TRUE) 
             }))) 
    return(cbind(kk,urlname=url_name))}))) 
      X1         X2                          urlname 
1 17 backers       $10 reward         https://www.kickstarter.com/projects/1154444340/god-in-new-york/description 
2 9 backers       $15 reward         https://www.kickstarter.com/projects/1154444340/god-in-new-york/description 
3 9 backers       $30 reward         https://www.kickstarter.com/projects/1154444340/god-in-new-york/description 
4 30 backers       $50 reward         https://www.kickstarter.com/projects/1154444340/god-in-new-york/description 
5 1 backer       Josh Ginter https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
6 1 backer    Project by Josh Ginter https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
7 3 backers Pledge $1 or more\n\nAbout $1 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
8 3 backers      About $1 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
9 3 backers Pledge $1 or more\n\nAbout $1 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
10 3 backers      About $1 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
11 6 backers Pledge $5 or more\n\nAbout $5 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
12 6 backers      About $5 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
13 1 backer Pledge $5 or more\n\nAbout $5 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
14 1 backer      About $5 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
15 3 backers Pledge $10 or more\n\nAbout $10 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
16 3 backers      About $10 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
17 3 backers Pledge $10 or more\n\nAbout $10 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
18 3 backers      About $10 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
19 6 backers Pledge $25 or more\n\nAbout $25 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
20 6 backers      About $25 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
21 1 backer Pledge $25 or more\n\nAbout $25 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
22 1 backer      About $25 USD https://www.kickstarter.com/projects/1685845978/creature-and-hand-1-an-accordion-comic?ref=category_featured 
+0

Спасибо за ваш ответ. Я проверю его и вернусь. Можно ли составить список URL-адресов? – angs

+0

Да, вы можете использовать 'lapply' для запуска списка URL-адресов. Пожалуйста, [принимайте] (http://stackoverflow.com/help/accepted-answer) ответ после того, как он сработал для вас. – user227710

+2

@angs looping over list - это базовая операция R, которую вы бы хорошо узнали, вместо того, чтобы просить нас окунуться в вас. Там есть много документации по R, уделите некоторое время, чтобы учиться у тех, и * затем * спросите здесь. – Spacedman

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