>> [음악 재생]
로버트 KRABEK : 안녕하세요, 여러분.
내 이름은 로버트 Krabek하고, 나는 너희들을 가르 칠 것입니다
로 웹을 긁어하는 방법 루비 라이브러리 노코 기리,
그리고 크롬 확장 기모노.
>> 그래서 일단 거기 몇 가지 당신이
당신이 봤는데 아마 경우에 할 수있다 지금까지 모든 psets를 일
당신의 작업 공간입니다 조금 전체지고.
우리는 실제로 그냥 가서 수 당신을 위해 새로운 작업 공간을 만들
그냥 새로운 프로젝트를 수행한다.
계속 하시겠습니까한다면 CS50 템플리트 ID에서 작업
당신은 현재 가지고, 무료로 느끼고, 당신은 할 수 있습니다
CFLAGS와 노코 기리를 설치 equals-- 보석 노코 기리를 설치합니다.
하지만 그렇지 않으면 내가 당신을 보여 드리죠 새 최대를 설정하는 방법에 대해 설명합니다.
그리고 다음이 본질적으로 더 훈련 바퀴를 포기.
당신이 인 것처럼 그리고 당신은 코딩하고 단지 숭고한 또는 뭔가 코딩.
우리는 그것을 통해 이동한다면.
>> 그래서 현재 CS (50) ID 말한다.
당신은 여기 Cloud9에 갈 수 있습니다.
당신은 당신의 대시 보드로 이동 할 수 있습니다.
이 작업 영역 탭을 제기해야합니다.
그리고 당신은 클릭 할 수 있습니다 여기에, 새로운 작업 공간을 만듭니다.
새 작업 공간의 이름을, 어쩌면 시험, 또는 스크래핑.
그리고 여기에이 사용자 지정 탭을 클릭, 대신 CS50 템플릿 탭.
그리고 당신은 갈 수 있습니다 새로운 작업 공간을 만들 수 있습니다.
>> 난 이미 여기에 작업 공간을 만들었습니다.
그래서 우리는이 작업을 할 수 있습니다.
그리고 새를 만든 경우 작업 영역 사용자 지정 탭 너무,
당신은 보석 설치 입력 할 수 있습니다 여기려고하고 있지 않다 노코 기리.
확인, 그것은 조금 냉동입니다.
하지만 당신은 노코 기리를 설치 보석 입력 할 수 있습니다.
그리고 그 모든 것을해야한다고 설치있다.
>> 내가 말했듯이, 전에 당신은 여전히​​ 있다면 당신의 CS50 템플리트 ID에서 작업,
당신은 단지 CFLAGS를 입력해야 보석 노코 기리를 설치 같다.
그리고 난 이미 설치 한 그것은 여기에 그래서 나는 그렇게하지 ​​않을 것이다.
그러나 사람들을 위해 다음과 같은 따라서 이렇게 주시기 바랍니다.
>> 당신이 당신의 노코 기리있어 일단 그래서 작업 공간 또는 라이브러리 설치
나는 당신에게 조금 줄거야 루비 구문에서 충돌 코스
노코 기리가 루비 라이브러리이기 때문이다.
그래서 당신은 몇 가지 기본을 알아야합니다 노코 기리 작업을위한 루비 구문.
그래서 몇 가지 기본적인 차이 당신이 사용하는 것과
아마도 당신이 일하고 한 경우 지금까지 단지 C와 PHP에서,
당신이없는 유형의 변수를 선언합니다.
당신은 세미콜론을 사용하지 않는, 이는 안도의 일종이다.
지금 주위에 괄호가 없습니다 또는 루프 동안, 예를 들면.
사용자는 단지 코드의 블록을 가지며, 당신은 그 말에 종지부를 찍​​을.
더 플러스가 없습니다 플러스 마이너스 마이너스, 너무
경우에 대해 알고 당신은 루프를하고있는,
다만 플러스 같고 마이너스 같습니다.
그리고 대신 해시의는, 당신은 필요로 사용하고 있습니다
노력 어떤 라이브러리 프로그램에로드합니다.
>> 루비는 컴파일 된 언어가 아닙니다.
그래서 다른 구조입니다.
그것은 PHP 곳으로 더 비슷 그것은 해석 언어입니다.
당신은 어떤 루비 스크립트를 실행할 수 루비는 그 다음에 당신은 쓰기
스크립트 또는 프로그램의 이름으로.
이 루비 프로그램의 것을 의미하는, 당신은 .rb 대신이 .c로 끝.
그리고 변수가있다 루비 크기의 배열,
이는 당신이있을 때 매우 편리합니다 긁어 아마도 추가 할
당신이 배열로 스크랩 한 데이터.
당신은 새로운 배열을 malloc을하지 않고 새로운 배열로 기존의 배열을 복사합니다.
당신은 단지에 추가 할 수 있습니다 두 화살표 표지판.
그리고 어떤 문자가있다, 없다 다만 단일 문자 문자열.
그래서 좀 더 쉽게해야한다.
>> 그래서 우리는 단지 당신에게 줄거야 몇 가지 기본적인 루비 구문의 예.
그래서 여기에 대신의를 볼 수 있습니다 슬래시 슬래시, 루비 댓글에
당신은 파운드 기호를 사용합니다.
그리고 변수 선언, 당신 다만 변수 등호를 입력
어떤 변수가되고 싶어요.
그들은 문자열이 될 수 있습니다.
당신은 배열을 가질 수 당신은 값으로 채 웁니다.
두고 지문이 유사하다.
우리의 목적을 위해, 유일한 차이는 정말
그 의미있는 둔다 풋, 그냥 새로운 라인을두고
문자는 어떤에서 당신은 인쇄하고 있습니다.
>> 우리는 작은을 제공한다면 여기 데모,
우리는이 일 해요 실행할 수 있습니다 새 터미널을 엽니 다.
당신은이 모두를 볼 수 있습니다 내 단말기에있는 파일.
그리고 난 그냥 실행하는 경우 루비, 루비 intro.rb, 그것을
안녕하세요 다섯을두고 메이, 퀸시, 캐리어.
아담스.
그게 다야 그래서이 선언 배열한다.
청중 : 로버트, 당신은 할 수 있습니다 글꼴 조금 더 큰?
로버트 KRABEK : 예.
당신은 할 수 없기 때문에 내가 확대 할 수 있습니다 분명히 터미널 글꼴을 확대.
>> 그래서 인쇄 방법 터미널에 변수.
당신은 또한 사용할 수 있습니다 문자열 내부 변수.
그래서 최근 PHP에서, 당신이 배운 있습니다
문자열 보간이 있음.
그래서 당신이 여기 봐, 난 경우 세 가지 변수, 이름, 라이브러리를 선언
언어, 그리고 풋, 내가 문자열을 쓰기, 안녕 내 이름입니다.
그리고 대신 PHP 문자열 보간 버전
이는이 같은 좀 더 보이는, 당신은 파운드 기호를 가지고 있고,
중괄호 다음 변수의 이름.
그리고 그 인쇄하려는 방법, 말의, 어떤 변수 이름입니다.
>> 그리고 당신은 또한 수 문자열을 연결.
루비는 슈퍼한다 더하기 기호 쉽게.
당신은 하나의 문자열을 왼쪽 플러스 변수에
다른 문자열을 더한 문자열이나.
나는이를 인쇄하는 경우, 그것은해야한다 그래서 그냥 내 이름은 로버트, 인사.
난 당신이 루비 노코 기리 가르 칠 것입니다.
>> 그리고 그냥 그 확인하자 실제로 case-- 루비 소개합니다.
안녕하세요, 제 이름은 로버트이다.
난 당신이 루비 노코 기리 가르 칠 것입니다.
>> 에 이동, 다른 if 문, 그것은 조금 다르다
당신이 사용할 수있는 것과 당신은 C에서 일하고 한 경우
당신은 괄호가 필요하지 않습니다.
당신은 중괄호가 필요하지 않습니다.
그리고 대신하는 경우 다른 사람의, 그것은 연결된 ELSIF입니다.
여기에 그래서, 내가 선언 한 경우는 최대 X 우리가 볼 수있는 여기, x는 여전히 5입니다.
x가 3 미만이면 그래서, 작은 넣을 것이다.
그것은 7, 매체, 다른 큰 미만의 경우.
그래서 5 매체 수이다.
그리고 나는 끝 코드 블록을 종료.
>> 여기에 루프 내입니다.
그리고이 구문은 또한 약간의 차이.
0에 다섯 다만 본질적으로 0-5의 배열을 선언한다.
그래서 배열의 다섯 슬롯이있다.
그리고 그 각각의 슬롯에 대한 배열, 난을 증가 할 것이다.
그래서이 4 0-5, 또는 0을 인쇄해야합니다.
그리고이 매체에 인쇄해야합니다.
>> 그리고 난 그냥 통해 불꽃 것이다.
너희들은 액세스 할 수 있습니다 나중에이 코드에.
그래서 너희들이 자신을 실행할 수 있습니다.
>> 그래서 이것은 기본적인 while 루프입니다.
이것은 단지 J 인쇄 될 것입니다, 우리는 5 명중 할 때까지 1 씩 증가.
>> 슈퍼 빠른 루비 충돌 과정 함수를 작성하는 방법에 대한.
대신, 말, INT 계승 수, 우리는 단지 데프있다.
그리고 기본적으로 당신이있어 여기에 함수를 정의.
이 될 것입니다 함수의 이름,
이 모든 변수입니다 당신 함수에 전달하려는.
당신은 내 경우 문을 가질 수 있습니다.
당신은 반환 할 수 있습니다.
이 경우, 우리는 야 재귀 적 정의
구현 계승 기능.
그래서 우리는 단지 함수를 호출 이 같은 루비.
>> 나는이 나는, 정의했다면 그래서 3 전달, 계승를 호출 할 수 있습니다,
다음 3은 숫자 변수가 될 것입니다 나는 함수 내에서 사용할 수있는.
그리고이 그리고 to_s 단지를 돌고있다 문자열로 계승의 값을 반환합니다.
그렇지 않으면이 발생합니다 오류 난, 오 말
string--를 인쇄 할 수 없습니다 당신이 기억하고 있기 때문에,
이 때문에 string-- 넣어 둔다 계승은 숫자를 반환했습니다.
그래서 우리는 그것을 변환 할 수 있습니다 같은 같은 문자열에.
반대로, 당신은 또한 변환 할 수 있습니다 to_i와 정수에 문자열.
>> 그래서 모든 것이 매우 간단하고, 난 그냥이 주석하는 경우, 저장
과 계승 기능을 실행합니다.
우리는 볼 수 있어야합니다 3의 계승은 6입니다.
그리고 그것은 참으로 사실이다.
>> 그래서 루비에서 충돌 코스입니다.
그리고 지금 당신이 루비를 알고, 우리는에 갈 수 있습니다 기본 노코 기리로 설정 긁어.
기본적으로 당신이 할 일은, 루비, 라이브러리를 필요로한다.
그리고 우리의 목적을 위해 우리가 사용할 것 라이브러리 OpenURI뿐만 아니라 노코 기리.
그리고 무엇을 당신은 do-- 그것은거야 당신이 항아리에 대한 구문을 제공
당신은 당신이에서와 마찬가지로 많은 URL을 열 것입니다 C의 URL을 의미 컬 요청.
>> 그래서 당신의 URL을 문제의 웹 사이트.
당신은 변수에 저장합니다.
그리고 당신은을 통해 검색 할 수 있습니다 사용하여 고유의 HTML 태그에 대한 변수
.CSS 명령.
그리고 출력 할 수 있습니다 당신이 원하는 목적지까지 내용.
당신은 데이터베이스에 시작할 수 있습니다.
당신은 수있는 파일로 출력하거나, 다만 화면에 인쇄 할 수 있습니다.
>> 그래서 우리는 당신이 기본 스크레이퍼를 보여줄 것이다.
여기에 당신은 우리가 볼 수 있도록 노코 기리 요구, 오픈 URI가 필요합니다.
귀하의 기본 셋업,하자의 , 문서 또는 문서를 호출
노코 기리 :: HTML은을 인 개방과 동일 OpenURI이 당사에 제공 한 명령
도서관.
그리고 우리는의 사람들을 위해, 검색 할 수 있습니다 쿼드에 거주 할 수있는 당신,
보스턴에 나와있는 자전거 보스턴 크레이그 자전거 섹션에
대지.
>> 당신이 익숙하지 않은 경우에 따라서 컬, 난 그냥거야
진짜 빨리 컬이 어떤 작업을 수행하는지 방법을 보여줍니다.
나는에서 URL을 모두 얻을 원한다면 크레이그리스트 사이트, 내가 컬 입력하면,
그냥 URL의 모든 덤프 크레이그 자전거 사이트에서
내 단말기 상.
그것은 특히 아니다 유용 내가하지 않기 때문에
수동으로 통과 싶어 내가 찾는 일을 찾을 수 있습니다.
하지만 너무 당신은 할 수 난 사실이야 볼
당신이 보면, 오른쪽 코드를 사용하여 bikes--에 크레이그리스트의 URL에서
어떤 이유로 그것을 찾을 수 없습니다입니다.
이 페이지를 보면 당신은 URL에서 보면,
이 동일해야합니다 난 그냥 보내 컬을 요청.
그리고 실제로, 그 것을 무슨이다 문서 변수에 저장.
>> 그래서 당신은 우리의 코드로 되돌아 갈 때, 우리 다음이 문서 변수를 조작 할 수 있습니다
.CSS 사용하여.
그래서 모두를 얻고 싶었다 말 span.txt있는 태그,
해당 태그 내의 모든 태그입니다.
그리고 왜 우리는 할 수 있습니다 이렇게, 당신은 울고 들었어?
>> 우리는 요소를 검사하는 경우, 그것은 당신을 제공합니다 URL이 어떻게 구성되어 있는지의 고장.
나는 통해 아래로 스크롤하면 여기, 당신은 볼 수 있습니다
어떻게 서로 다른 각각의 요소를 나타냅니다.
그래서 어쩌면 내가 액세스 할 이 특정 요소입니다.
그래서 크롬 개발자를 사용하고 있습니다 도구는 요소를 검사합니다.
여기 다운 볼이 그 수 이 범위 내에서 태그입니다
TXT의 클래스와 태그.
>> 그래서이에 도달 우리의 첫 번째 작업하는
태그는 doc.css 범위이며, 그 나는이 모든 URL 내에서 찾고 있어요.
그리고 .txt를 CSS와 같은 많은 운영 당신은 단지 CSS를 작성할 때 수행
하여 HTML 파일에서 클래스를 지정.
그래서이 특정 연산자는 것 TXT의 클래스와 span 태그를 지정합니다.
그리고 나는 공간을두면, 이는 그 태그 내에 갈 것입니다
다음이 내 태그를 찾을 수 있습니다.
>> 그래서 난 그냥이를 넣어 경우 터미널, 내가해야
기본적으로 모든 것을 볼 수 그 클래스 TXT의 범위 내에있다.
그래서 우리는 갈 것을 줄 것이다.
루비 크레이그리스트 - 스크레이퍼.
그리고 실제로 그것은 우리에게이 모든을 제공합니다 다양한 옵션의 태그
크레이그리스트 페이지에 있습니다.
>> 우리가 돌​​아 가야한다면, 우리는이를 설정할 수 있습니다 뭔가에 좀 더 유용합니다.
어쩌면 우리는 단지 링크를 할 수 있습니다.
이 태그 내에서, 나는 또한 것이기 때문에 경로의 하이퍼 링크를 가지고
것을이 페이지로 이동합니다.
그래서 여기에이 코드를 보면, 내가 무엇을 할 거 야하는 대신 .CSS입니다
나는 at_css을 갈 수 있습니다.
그리고 이것은 단지 첫 번째를 얻을 것이다 그 모든 것들의 요소입니다.
내가 인 경우에 그를 수행하려면 코드 그냥 이전에 증명,
대신 모든 반환 이 중, 그냥 것
그 중 첫 번째를 반환합니다.
at_css 운영자가 어떻게 작동하는지 그래서입니다.
>> 그래서 우리는을 저장할 경로 첫 번째 태그의 모든.
그리고 우리를 할까 .. 줄 것 때문에 그래서 우리는 여전히 .CSS를 사용하는 것입니다.
하지만이 때문에 줄 것입니다 우리 다시 태그의 전체 배열,
우리는 액세스에 가고있다 첫 번째 요소.
그래서 이것은 또 다른 방법은 당신이 할 수있다 만약 존재하는 경우 특정 요소에 접근
요소들의 어레이를 갖고 그는 반환됩니다,
당신은 아무것도를 처리 할 수​​ 있기 때문에 그 본질적으로 배열로 .CSS 돌아갑니다.
그리고 우리는에 액세스 할거야 이러한 하이퍼 텍스트 참조 속성.
>> 그래서 살펴 경우, 경우 당신은 여기에 정말 가까이 보였다
다만 본질적 경우 URL 표시 줄에 보면,
이 경로입니다 당신이된다고 할 것입니다.
우리가 다시 실행한다면, 그리고 우리가 그것을 저장 한 확인하십시오.
당신은 집에서 확인할 수 있습니다.
이 사실은이 링크와 일치합니다.
>> 그런데 왜 우리는 이것을 사용할 수 있는가?
당신은 긁어하려면 그것을하고있는 페이지
같은 링크의 페이지 크레이그리스트는 않습니다 당신
다음 이동 할 수 있습니다 해당 링크의 각으로
다음을 긁어 그 내용, 어떤
우리가 할거야 정확히 것입니다.
>> 이 같은 경로를 일단 그래서 변수, 나는 더 이상 정말 없습니다
그것을 밖으로 인쇄하는 방법에 대한 관심.
난 그냥 변수로 저장해야합니다.
그리고 나는 또 다른 액세스 할 수 있습니다 내가 액세스 같은 방법으로 페이지
처음에 의사.
URL을 제외하고, 우리는거야 문자열 보간을 사용하는
같은 난에 설명 된 루비 이전에 추가하려면
루트의 단부의 경로.
>> 그래서이 할 것입니다 것은 이 경로에 넣어 것입니다
나는 이전에 긁어 그 다음이 차례
새 항목으로, 당신이 원하는 무엇이든 그건 ... 예를 들어, first_listing 호출합니다.
하지만 난 떠날거야 지금은 항목에,
그게 내가 여기에 사용하고 무엇 때문입니다.
>> 그래서 설명을 얻고 싶었다 말 크레이그리스트의 첫 번째 게시물의.
그래서 여기로 갈 것입니다.
나는 요소를 검사 클릭 것 다시,이 설명은하기 때문이다.
여기 가서 볼 것 내가 찾을 수 있다면 어떻게 수도
이 고유 한 태그를 검색 할 수 있습니다.
그리고이 경우, 보유 우리를 인도 ID,
를 검색하는 우리의 다음 방법에 태그있는 해시 태그와 함께입니다.
>> 클래스, 당신은 할 수 있습니다 도트 연산자를 사용합니다.
그래서 .txt를, TXT의 클래스를 지정한다 해시 반면 ID를 지정합니다.
이 경우, 태그는 섹션 및 ID는 postingbody입니다.
>> 그래서이 가서 발견 first-- 우리가이기 때문에
이가는 at_css-- 사용 첫 번째 요소를 발견하는
섹션의 태그로 온다 과 postingbody의 ID입니다.
그리고 당신은 텍스트 요소에 액세스 할 수 있습니다 해당 항목의이는 .text로 돌아왔다.
그리고 우리는 저장할 수 있습니다 설명에서 그.
>> 그래서 지금 우리가이 있는지 변수 설명,
우리는, 말하자면, 할 수있을 것 I / O 파일. 그래서 루비 I / O 파일
I / O를 파일과 매우 유사 C에서 우리는 파일을 열 경우.
우리는 쓸 수 있습니다.
그리고 우리는 그 파일을 닫을 수 있습니다.
>> 그래서 여기, 우리가 명명하고있는 , 어떤 임의의 변수를 파일.
우리는 또한 여기이 넣을 수 있었다.
우리는 우리가 저장하는 변수가 File.open와 같은 파일 열기.
그리고 우리는이 파일에 작성하는 그래서 우리는 승 연산자를 엽니 다.
그리고 우리는에 문자열을 넣어 .puts 운영자와 파일.
그리고 우리는 변수를 넣어 그 우리 그 내부의 파일에 기록합니다.
그리고 우리는 단지 파일을 닫습니다.
>> 그래서 우리가 가서 이것을 실행하는 경우, 이 문서를 생성한다
의 description.txt있는 것 그 안에이 설명이있다.
그래서 만약 내가 아니 그건 ...를 실행합니다.
또한, 텍스트 파일을 생성있어 희망, 같은 일.
그래서 새로운 게시물이되었을 수 있습니다 내가 얘기 한 동안 그 최대왔다.
가 있었다처럼 그리고 실제로 그것은 본다.
그래서 우리는이 고전적인 자전거로 이동하는 경우, 1962 1966, 그 일치하는 것 같다.
그리고 거기 당신은 간다.
>> 그래서 가장 기본적인있어 스크 레이 핑의 기능을 제공합니다.
우리는 대신 할 수 그냥이 파일에 쓰는,
우리는 배열에 물건을 추가 할 수 있습니다.
나는 세 가지 배열을 선언한다면, 제목, 가격, 설명.
그리고 우리는 이제 문서 항목을 운영하고 있습니다.
우리는 통과 할 수 있습니다 span.txt을 모두 찾을 수 있습니다.
그리고이 배열을 반환 기억 찾은 모든 항목의.
그리고 루비에, 당신은 사용할 수 있습니다 모든 항목을 반복하는 .each
배열의 형태가됩​​니다.
그리고 각 항목에 대해, 난 그냥 전화를하려고 해요
, 그 때문에 링크 그것은 본질적으로 무엇.
>> 그래서 각 link.css 도트 a.hdrlnk를 넣어 경우, 이 실제로 링크 것입니다
그 링크를 다른 내에서 찾기 HTML 요소 및 대응하는 클래스입니다.
그래서 만약 우리가 무엇을 기억 이것은, span.txt이었다
당신은 나를 그냥 가자 비칩니다 수 있습니다 span.txt 내에서 실제 quick--
우리는 다른 클래스를 많이 가지고있다.
그래서 span.txt 안에, 우리가 찾고있는 클래스 hdrlnk와 태그.
그래서 내가 그냥을 찾을 수 있습니다 너희들 진짜 빨리합니다.
>> 당신이 볼 수 있도록,이는 태그입니다 그 클래스 TXT의 범위 내에서의
즉, 클래스 hdrlnk 있습니다.
그리고 실제로 무엇을의 우리가 얻으려고 노력하고 있습니다.
>> 그래서 우리는 지금 모두를 저장하기 위해 노력하고 제목 안에 해당 링크의.
그리고 우리는 인쇄 할거야 해당 링크의 각 부족합니다.
아니, 죄송합니다.
우리는 인쇄거야 이들 각각의 가격.
그럼 정말이 실행하자 신속하고 그것이 무엇을 참조하십시오.
>> 그래서 이것은 단지 기본적으로 갔다 각각의 링크를 통한
결국, 문제의 태그를 액세스 다음 가격을 꺼냈다.
그리고 그것은했다 그 이후 때문에 당신은 제목에 모든 것을 가지고,
우리는 그냥 제목을 저장했습니다.
우리는 링크를 저장 한 배열 타이틀 내의.
루프 동작이있어서, 어디 대신 a.hdrlnk에가는,
우리는 span.price 찾고 있습니다.
난 그냥 정말 빠르게 찾을 수 있다면 가격, 당신이 요소를 검사하는 경우,
당신은 기간이라고 볼 수 있습니다 가격의 클래스.
그리고 그 본질적 방법 우리가 가격을 받고있어.
>> 그래서 정말 스크 레이 핑의 기본 경우.
그것은 당신이 모든 얻는 방법 페이지 요소
즉, 말하자면, 당신은 이미의 URL을 알고있다.
>> 우리가 얻을 싶다면 , 깊이 더 작은
우리는 페이지 내에서 페이지를 긁어 수 있습니다.
그리고이 예를 들어, 나는거야 CSV 파일로 출력합니다.
그래서 여기에 CSV를 필요로 해요 루비하지 않기 때문에, 그 자체의 내부,
기능이 단지 출력 CSV 파일에.
그래서 매우 간단합니다.
나 그냥 다음에 가자.
우리는 파일 I / O에 덮여있다. 그래서이 그것은 C에 얼마나 유사하다
그리고 우리가 기모노로 이동하기 전에, 내가 얼마나 당신이 정말로 빨리 보여주지
관광지 내 사이트를 긁어.
>> 그래서 우리는 이미 방법을 배웠습니다 루비의 배열을 선언합니다.
그래서 난 그냥 선언하고있어 임의 배열의 무리
것을 나는 내에서 데이터를 저장한다.
DOC는 동일한 방식으로 작동 그것은 이전의 파일에했던 것처럼.
우리는 발견,가는거야 span.txt 년대의 각.
우리는 이미 알고있다.
즉, 용기있는 각 내 링크는 우리가 원하는 데이터를 모두 갖는다.
>> 그래서 여기에 우리가하고있는 각입니다 스팬 클래스 TXT의 링크는, 우리가가는거야
우리는, 태그를 찾고 있습니다 그 첫 번째 요소를 발견.
, .CSS가 배열을 반환 기억 그대로 그래서 당신은 단지 그것을 액세스 할 수 없습니다.
우리는 첫 번째 요소를 찾을 것입니다.
그것은 하나의 배열이더라도 항목, 당신은이 구문을 사용해야합니다,
다음 href 속성을 꺼냅니다.
>> 그래서 우리는이 이전했다.
그래서이 익숙 할 것이다.
그래서 지금 우리는 배열을 가지고 우리의 모든 링크의 호출 경로
우리가 사용하고자하는 거라고.
그래서 우리 모두의 배열이있는 경우 우리가 사용하고자하는 경로,
우리는 다음 각 항목을 만들 수 있습니다 해당 페이지의 우리는 그 페이지를 열 때.
우리는 또한에보고 그래서 전에 여기서 구문
경로 문자열 보간을 수행 여기에, 그래서 구문은 경로입니다.
그리고 나는이 이름을 수 변수에 임의의 이름입니다.
>> 이 중요한 것입니다.
이것은 당신이거야 배열입니다 각 요소에 액세스해야합니다.
하지만 당신은 경로에 경로를 말할 때, 이 경로의 각 요소 수단,
경로를 호출하고, 그 사용합니다.
이 때를 같이 본질적으로 루프를하고 당신은 내가하는 int 사용합니다.
그래서 당신은 같은 경로를 처리 할 수​​ 있습니다 증가 있어요 변수입니다.
>> 그리고 그 각각에 대해, 해당 링크의 각으로 이동합니다.
우리가 항목 페이지에 저장하고 있기 때문에, 그래서 우리는 때마다 새 페이지를 만드는
우리는 그것을 액세스 할 수 있습니다.
그리고 그 새로운 페이지 내에서 발견 span.postingtitletext, span.price,
다음 섹션 # 1 postingbody.
우리는 이미 섹션 # 1 postingbody 덮여 우리는 설명을 보았을 때.
>> 그래서 우리는 크레이그리스트 게시물에서 볼 갈 수 있습니다, 그냥 제목에서 찾는다면,
당신은 여기를 볼 수 있습니다 스팬 postingtitletext.
그것은 거기에 이유입니다.
그리고 가격, 당신은 할 수 가격의 스팬 클래스로 액세스 할 수 있습니다.
>> 그래서 우리는 아마도 수도 URL을 저장할.
그래서 우리는이를 실행합니다 다시 배열에 보관
당신이 찾고 있다면 때문에 크레이그리스트에, 당신이있어
아마 경우, 방식을 원하는 것 당신은 관심사 무언가를보고
다시 해당 사이트로 이동합니다.
그래서 당신은 저장할 참조 술의 URL.
>> 이것은 단지 본질적 루프에 대한 또 다른 구문.
난 그냥 대신 paths.each 할 수 의 인덱스 경로의 경로.
그리고이 구문은 루비 for-- 경로는, 우리가 여기에 무슨 짓을
각 항목에 대한 변수를 선언.
그리고 지수는 같은 동작 루프에 대한 C의 I.
그래서 당신은 추적 할 수 있습니다 인덱스가 무엇인지.
>> 그래서 여기에 단지입니다 작은 편리한 것
당신은 스크레이퍼를 실행하는 경우에 대한.
당신이 페이지의 수백을 긁어하는 경우, 이 매달려 아니에요 있는지 확인합니다,
그것은 단지 출력을 것입니다 나는이 페이지에 액세스하고있어,
그 확인하고 여전히 계속있다.
그러나 우리의 목적을 위해, 때문에 백 항목이있다,
나는 그들 중 단 세에 액세스 할거야 우리는 여기에 시간이 부족하지 않도록.
>> 우리가 도착하기 전에, 나는 그냥 해요 당신이 정말 빨리 보여 드릴 거예요,
나는 제목을 출력한다, 가격, 설명 및 URL
내가 스크랩 한 각 링크의.
그리고 이것은 단지입니다 CSV 라이브러리에 대한 구문.
당신은 CSV를 엽니 다.
이것은 내가 그것을 호출하는거야 것입니다.
쓰기 DO와 함께 엽니 다.
그리고 CSV 파일이 될 것이다 당신에 대한 모든 것을 입력하고 있습니다.
이것은 단지 전성 검사입니다 내게는 실행중인 것을 알 수 있습니다.
그리고이 내 정신 검사입니다 작업이 완료 있다고 알고 있습니다.
그래서에서 행에 제목을 걸었습니다 CSV, 가격, URL, 설명,
모든 CSV의 행에.
>> 우리가 가서 실행한다면 이들을 당장 내가 단지
내가 그건 ...를 대신 저장 한 것을 확인 단지 단말기로 출력하는,
우리는 CSV를해야한다 생산있어 파일.
그래서 여기에 우리는 CSV를 볼 수 있습니다 생산되어있어 파일.
이것의 출력 난 그냥 실행되었는지 풍경입니다.
당신이 여기에서 볼 수 있듯이, 액세스 페이지 0, 1, 2, 3.
이러한 타이틀이며, 가격, 설명.
그리고 우리는이 CSV를 보면 우리가 생성 한 파일,
당신은 여기에 출력 볼 수 있습니다.
이것은 엑셀 아니므는 아니다 행 및 열 형식.
하지만 당신은 어떻게 상상할 수 그것은 형식이 될 수 있습니다.
>> CSV는 쉼표로 구분 된 값을 의미합니다.
그래서 당신이 행 수 있습니다 상상할 수있다.
그리고 각각의 쉼표는 것 별도의 열을 나타냅니다.
caution-- 그냥 단어 때때로 당신이있어
쉼표의 많은 것들을 긁어.
당신이 출력하는 경우 그래서 CSV 파일로,
그 수도 출력하지 당신이 생각하는 방법.
>> 그래서 기본적으로 전부 기본 HTML을 긁어에있다
노코 기리가있는 페이지입니다.
>> 인터넷되는 것도 혁신이 올 것처럼
보다 자동화 및 GUI와 덜 강력한이기는하지만 버전,
다양한 웹 사이트를 긁어 버전.
그리고 우리의 목적을 위해 나는 시연 할 것이다
기모노라는 크롬 확장.
그리고 당신이 할 일은 당신이 탐색하다 당신이 긁어 원하는 페이지로 이동합니다.
당신은 관심의 필드를 클릭합니다.
당신은 필드를 교정, 자동 때문
그것은 어떻게 생각하는지 감지 당신은 근근이 살아가고 싶은,
다음은 API를 만들 수 있습니다.
>> 우리가 있었던 경우에 따라서 그것을 증명합니다 크레이그리스트는, 실제로는 작동하지 않을 것입니다.
그리고 이것은 내가 다시 무슨 일이 있었는지입니다 이 같은 강력한되지 않는 디자이너.
그것은 문제가 API를 만드는있다.
그러나 데모로 그것을 어떻게 할 것인지의,
당신은 크롬 확장 프로그램을 설치하는 경우, 당신이 모든 당신이 그것을 클릭합니다.
이 페이지를 Kimonofies, 다음을 당신이 스크립트에 할 일을 클릭합니다.
>> 그래서 클릭한다면 즉, 강조 표시 할
무엇을 생각 내가 원하는 해당 페이지를 긁어합니다.
그래서 어쩌면 내가이 명부를 호출합니다.
이것은 내가 선택한 얼마나 많은 항목입니다.
그리고 난 그냥 확인 또는 일부를 거부 할 수 있습니다 다른 제안 리스팅
가에 추가 얻을 어떤 것은 긁어됩니다.
>> 그래서 지금 우리는 거기에 볼 수 있습니다 백 항목을 선택했습니다.
나는 다른 필드를 원한다면 그 나는 또한이 관련되는 긁어,
내가 가격을 긁어하고 싶은 말은 뿐만 아니라, 그때는 동일한 기능을 수행 할 수 있습니다.
>> 그래서 여기에 그것의 방법의 데모입니다 훨씬 강력한, 지금이기 때문에
대신 도시를 따기 내가 원하는 단지 가격.
그리고 지금은 200 일을 잡았습니다.
당신은 돌아가서 삭제할 수 있습니다.
당신은 다시 시도 할 수 있습니다.
하지만 보장은 없다.
이것은이 가끔 작동하는 방법이다.
당신이 여기에서 보는 바와 같이, 지금은 여기에 (96)을 말한다.
이 링크의 대부분을 잡았습니다 당신이 원하는 것을 긁어 있지만합니다
반드시 그들 모두.
>> 기모노의 또 다른 유용한 도구지만 당신이 고급 기능에 갈 수있다
여기에, 고급으로 이동 그것은을 보여줍니다
고유의 항복 HTML에 액세스하는 방법
당신이 긁어 할 태그.
그래서 목록에 대한, 여기에 보면, 당신이 DIV P는 스팬에 걸쳐 액세스하는 경우,
당신은 실제로 바로 사용할 수 있습니다 당신의 노코 기리 코드에서이,
여기서 우리가 span.txt도 전에 목록의 각 액세스 할 수 있습니다.
난 그냥 텍스트를 원하는 경우 목록 내에서,
내가 할 수 입력 DIV 공간 P 공간 범위 공간 스팬 공간,
과 동일한 효과를 얻을 수있다.
그리고 당신의 사람들을 위해 관심이있는 사람입니다 정규 표현식을 사용하는데,
그것은 또한 당신에게 정기적를 제공하는 일 입력 문자열의 표현 정렬
물건을 찾을 수 당신은 찾기 위해 노력하고 있습니다.
>> 그래서 또 다른 멋진 기능이있다 당신이 쪽수를 매기다 수있는 기모노의,
이는 단지 내가 긁어 수 없습니다 이 페이지의 결과,
나는이 작은 클릭 할 수 있습니다 여기에 버튼, 페이지 매김,
버튼을 그 것이다 지정 다음 페이지로 날 데려가,
그리고, 그것은 단지를 알 수 그 다음 페이지로 반복 할 수,
다음 짓이야만큼을 모두 긁어 그것은 course-- 같은 형식 인 것에
뿐만 아니라 해당 링크의 모든 풍경입니다.
>> 기모노 원하지 않기 때문에 그래서에 우리가 무슨 짓을했는지, 크레이그리스트와 함께 작동
나는 하버드 크림슨를 Kimonofied 것입니다.
난의 종류 중 일부를 뽑아했습니다 톱 기사는, 여기에 확인 기능.
이 모든 것을 말해.
나는이 API를 뽑아 봤어요 미리 당신을 위해.
하지만 당신은 할 것이다, 그렇지 않으면 무엇 당신은 단지 완료를 클릭 것입니다.
당신의 API의 세부 사항을 입력합니다.
로 설정 중 자동 또는 수동 기어.
그래서 당신은 업데이트 할 수있는 당신의 데이터를 15 분마다,
매일, 매주, 당신이 원하는대로.
당신의 API를 이름을 지정합니다.
API를 만듭니다.
당신의 이익을 위해, 내가 만든 이미 첫 페이지 API를 진홍.
>> 그래서 당신은 단지를 만들 기모노에 계정과
당신을 위해 모든 API를 저장합니다.
그래서 기본적으로 그게 다야 당신의 별도의 다른 긁힌 자국.
>> 우리가 여기에 보면 그래서,이 인 내가 수집 한 의견 링크.
다음은 추천 내가 수집 한 링크.
그리고이 가장 읽기 내가 수집 한 링크
이 최신 API 풍경에서.
>> 당신은 여기에서 볼 수 있다면, 이들은, 기능을 갖춘 것
이러한 의견 것, 이 예에서, 이는
나는 그들 모두를 결합했다 하나의 컬렉션으로.
하지만 당신은 그냥 놀러 경우 조금, 당신은 그것을 나눌 수 있습니다
그리고 그러나 그것을 분할 당신은 한 원하는
형식으로 약간 다릅니다.
>> 그냥이 주위에 재생, 크롤, 단점 중 하나 설정
당신은 단지 최대 크롤링 할 수있다 한번에 25 페이지.
즉, 제한 요소 중 하나입니다.
그러나 여기, 당신은 그것을 설정하는 경우 수동 기어로,이
당신이 그것을 말할 수있는 방법이다 데이터를 업데이트합니다.
그리고 여기에 당신은 당신의 크롤링 역사를 볼 수 있습니다 모든 것을 당신 크롤링 한 그.
그리고 너희들이 돌아갈 수, 가입, 모든 다른 방법으로 놀러
것을 수정하고 데이터를 사용할 수 있습니다.
>> 기모노는까지 설정할 수 있습니다 링크 내에서 링크를 긁어.
그리고 당신은 처음으로 그렇게 할 것 링크 목록을 긁어,
다음으로 그 API를 사용하여 다른 API에 대한 포인트를 뛰어
스크립트를 만들 수있다.
하지만 그보다 더 복잡 우리는 오늘에 들어갈 것입니다.
>> 그래서 기모노입니다.
우리는 프로에 대해 이야기 할 것입니다 및 노코 기리과 기모노의 단점.
>> 노코 기리은 정말 빠르다.
이 테스트 쉽다.
당신은 아무것도를두고 있습니다 콘솔은, 쉽게 구성 할 수 있습니다.
당신은 정확히 무엇을 결정할 수 있습니다 당신은 긁어 저장할.
어떤 페이지 제한이 없습니다.
난 사실처럼 긁어 그것을 사용 1800 남아프리카 학교 웹 사이트
내가 한 인턴에 대한 이메일에 대한.
>> 그래서, 가능성이 가장 좋습니다하지만 스크립트를 분할하는 것입니다.
그 다음, 실패 할 경우 때문에 당신은 아무것도하지 않습니다.
하지만 백을 할 경우, 아마 한 번에 200 페이지,
당신은 어떤 기회가 적어도 특히, 단편을 받고
당신은 나쁜 인터넷이있는 경우.
>> 불행하게도 그것은 단지 HTML을 긁어 수 있습니다.
그래서 만약 당신이 동적으로로드 pages--
나는 당신에게 예를 보여 드리겠습니다 second--에서 카약 등
노코 기리 불행하게도 그것을 긁어 수 없습니다.
>> 그러나 기모노는 사용이 편리합니다.
만약 본 것처럼, 그것은 본질적있어 포인트와 클릭.
그것은 자바 스크립트를 긁어 수 있습니다.
불행하게도, 최대가있다 당신이 긁어 수 있습니다 얼마나 많은 페이지.
때로는 약간의 구성하기 어렵다.
그것은 혼동됩니다.
그러나 그것은 확실히이다 뭔가 고려
당신이하려고하지 않는 경우 슈퍼 강력한 유지 보수 스크랩.
당신은 단지 얻고 싶은 경우에 빨리 페이지 떨어져 모든 것을,
다음 기모노는 정말 좋은 도구는 사용할 수 있습니다.
내가 전에 언급 한 바와 같이 그리고, 거기에 기모노의 고급 기능
그 방법을 보여줍니다 고유의 HTML에 액세스
심지어 슈퍼 유용 요소, 당신이 노코 기리에서 작업하는 경우.
>> 그래서 만약 우리를 위해, 카약 사이트로 이동 예를 들어, 당신이 볼 수 is--
또는 어쩌면 당신은 볼 수 없습니다.
하지만 카약 당신에게 URL을 보여 주면, 이 사실은 단지 소스 URL입니다.
이것은 인에 URL 앞서는 어떤 자바 스크립트 스크립트에 의해 수정
그들이 일이 일어나고있다.
그리고 그것은 다를 것 소자 검사에서.
>> 그래서 당신은 통과하고있는 경우 검사 요소가 일치
소스 코드에 대한 코드는, 그것의 실제로 다른 될 것이다.
그리고 이것은 왜 노코 기리은 본질적으로 동적으로로드 사이트를 긁어 수 없습니다.
노코 기리이기 때문에 소스 URL을 긁어,
기모노 실제로 반면 당신은 본질적으로하는지 긁어
선택 요소에보고.
>> 그래서 나는 통해 내가 가면 시도하고 Kimonofy 카약,
실제로 통해 갈 수 있습니다 그리고 가격을 선택합니다.
그것은 조금 어렵습니다 그리고이 경우의
실제로이 가격을보고 이들의 서로 다른.
당신이 configure-- 수있는 반면 그래서 나 이 동적으로로드되지 않은 경우,
당신은 노코 기리을 구성 할 수 있습니다 이들 모두를 얻을 수 있습니다.
>> 포맷이 약간 있기 때문에 이 목록에 대한 다른
그것은 나머지와 비교 될 때 그들, 그리고 여기에 볼 수 있습니다
실제로 사라와 선택한 모든 항공 요금.
어쩌면 내가 선택합니다 뿐만 아니라 비행 시간.
내가 통과 할 수 있으며 종류의를 구성합니다.
나는 그것을 원하지 않는다.
난 그냥 다음 비행기의 시간을 할 수 있습니다.
그리고 이들의 몇 후 겪고,이 그림을 가져옵니다.
그래서 기모노의 꽤 똑똑한.
그냥 아주 견고하지 않습니다.
>> 다른있다 당신이 사용할 수있는 대안.
그리고 내가 여기 당신을 보여줄 것이다.
당신은 더 편안 경우 대신 아마 루비 파이썬,
도서관이있다 아름다운 수프했다.
당신은이를 사용할 수 있습니다.
그것은 노코 기리와 매우 유사하다.
그것은 몇 가지 더 많은 기능을 가지고 있습니다.
당신은 HTML 태그를 찾을 수 있으며, 다음 위로 이동 또는 옆으로 이동합니다.
>> PyQt는이있다.
이것은 실제로 동적 긁어 수 있습니다 사이트, 그것은 일종의 때문에
척 웹킷이다 이 사실이없는 브라우저
브라우저 인.
그래서 모든 기다릴 것 자바 스크립트는 먼저로드하고
가서 시도하고 사이트를 긁어.
>> 루비를 고수하려는 경우 노코 기리에서 한 단계 위로 이동할 수 있습니다.
당신과 함께 카피 바라를 사용할 수 있습니다 심 령 래퍼.
그리고이 사실은 수 본질적으로 같은 일을
PyQt는, 구현되는 그것이 웹킷이다.
그것은 기다린다 자바 스크립트를 먼저로드합니다.
당신은 충분히 주변에 바이올린 경우, 당신은이 일을 클릭 얻을 수 있습니다.
>> 링크가 있다면 그래서 고전 HREF 곳은 아니다
경로가 쉽게 접근 할 수 있으며, 그것은 감​​지 일부 자바 스크립트 일이
클릭, 당신은 실제로 작업을 수행 할 수 있습니다.
인기 라이브러리 사용자 시뮬레이션
PhantomJS입니다 자바 스크립트입니다.
이것은 분명히 동적 긁어 수 있습니다 이 위치는 필수적이므로
크롬 척 사용자 인터페이스없이.
>> 그리고 나서, 물론 가장 강력하지만 느린 옵션,
셀레늄 브라우저 자동화입니다.
그리고 불행하게도, 당신은 않을거야
당신의 CS50의 IDE 내에서이 작업을 수행 할 수.
본질적으로 무엇 때문에 합니까, 그것은 당신의 크롬을 부츠
파이어 폭스, 어떤 브라​​우저 사용하려는 것으로,
그리고 마우스 어쩌면 추적 당신이 입력 무엇이든 운동,
그것은 그저 이 프로세스를 자동화합니다.
그래서의 일종으로 개발 된 웹 사이트 자동화 테스트 도구.
그러나 많은 사람들이 사용 웹 사이트를 긁어 셀레늄
그들은 그렇지 않으면이 있는지 어려움을 많이 긁어
이러한 다른 빠른 도구의 일부.
>> 그래서 내가 웹 스크래핑을 위해 가진 전부입니다.
재미가있다.
>> 청중 : 질문.
>> 로버트 KRABEK : 예.
>> 청중 : 해시 할 수있는 메커니즘이 웹 사이트 그래서 당신은 기본적으로 수
나중에 그것을 통해 이동합니다.
로버트 KRABEK : 네.
그래서 우리에 넣어 우리의 예를 들어, 둘 모두를위한,
우리는 문서로 전체 웹 사이트를 넣어.
그래서 당신은 실제로 단지 걸릴 수 있습니다 변수 문서는 파일에 기록합니다.
내가 원한다면 그래서, 난 할 수 HTML 파일로 쓰는,
그리고 사용 후 대신 OpenURI와 컬 요청
그때 난 그냥 문서를 열 수 있습니다 HTML과 그 검색합니다.
>> 청중 :하지만 당신은 보존 할 수 있습니다 온라인 경험의 종류
오프라인 작업을 수행한다.
예를 들면. 때 당신이있어 몇 시간 동안 비행
나는 기본적으로 보관할 전체 웹 사이트. [알아들을 수 없는]
>> 로버트 KRABEK : 네, 그 exactly--이다 그래서 말 그대로 무엇을하고 있는지이
그것은 모든 것을 복용한다 즉,이 URL을 것입니다.
우리는 컬을 실행한다면, 그건 이 HTML의 모든 복용,
그리고 그것을 저장있어 변수 문서 내부.
그럼 당신이 할 수있는 무엇이든 당신은 문서로 할 수.
당신은 파일로 출력이 가능합니다.
청중 :하지만이 최대 연결 아니에요.
그것은 동적 아니다.
그것은 바로,하지 순환입니까?
당신은 내가 무슨 뜻인지 볼?
나는 기본적으로 일종의 해시에 노력하고있어 내 하드 드라이브의 전체 웹 사이트
그래서 나는 기본적으로 그것을 할 수 있다고 인터넷없이 몇 시간 동안.
>> 로버트 KRABEK : 오른쪽.
내가 had-- 그래서 경우에 어디 내 파일 I / O를이야?
그래서 이것은 파일 I / O이다. 그래서 그 대신 말 이, 나는이 craigslist.html를 호출합니다.
나는 그것을 열 것입니다.
나는 그것으로 둔다의 문서를 것입니다.
나는 파일을 닫습니다.
그리고 단지 때문에 CS50 IDE 즉, 클라우드에 무엇을 것입니다.
내가 여기에 갈 수 있습니다.
나는 파일을 다운로드 할 수 있습니다.
그리고 그건 내 하드 드라이브에있을 것입니다.
그래서 당신은 그런 식으로 작업을 수행 할 수 있습니다.
당신이 집에 있다면 또는를 사용하지 CS50 IDE, 숭고한 또는 뭔가처럼,
이 때문에,보다 쉽게​​입니다 이 로컬 모두 사용할 수 있습니다
인터넷에 연결되지.
>> 청중 : 나는 참조하십시오.
이것은 하나의 특정 문제에 대한 것입니다.
그래서 당신은 재귀 적으로 그것을 할 수있는 당신 여러 계층에게 깊은 종류의 물건을 이동?
>> 로버트 KRABEK : 나는 폴더를 다운로드 할 수 있습니다 그건 경우뿐만 아니라, 당신이 요구하는지.
청중 : 네.
>> 로버트 KRABEK : 차가운.