크롤링 데이터 웨이 보에 아약스 시도

크롤링 데이터 웨이 보에 아약스 시도

저자 : 머피 머피 비 - 필리핀

머리말

시간 파리, 시간이 난다. 실수로, 분으로 하루 분의 시간으로 설정되어, 아무 일도 없지만 열심히 손가락처럼 활강 분할은 찾을 수 있습니다. 눈의 깜박임 금요일, 학교 벨 울렸다에게 친숙한 금요일에 갔다, 즉시 버리고. 나는 질투 빈 목표를 지키고, 후부의 창문에 의존, 교실의 마지막 행에 혼자 앉아 있었다. 관중이 일치하는 조용한 이동을 분산, 사람들은 매너처럼 편안하게 주저. 그리고 2 층 교실에있는 사람들이, 2013 년 11 월 금요일에 시간 프레임이 생각은 이미 거리에 표류, 층 침몰 은행 나무에 응시.

인용 된 기간 위 해 매우 인공 일기. 여기서,이 최대를 수행, 독자가 묻습니다 좋은 일이 될 수 있으며, 아래로, 당신의 생각은 정확히 어디에 표류? 내가 말할 것이라고하지 반 에이커에 대한 깊이 티안 티안 웬징 차원 꽃 관리와 같은 만리 장성 국경 영웅을 넘어도 장 키안. 예, 젊은이는 아약스 데이터를 크롤링 ---- 오늘의 테마의 무지한 생각했다.

간략한 소개 아약스

A는 대화 형 생성에 아약스, 즉 "비동기 자바 스크립트와 XML"(비동기 자바 스크립트와 XML)을, 의미, 페이지의 전체 웹 페이지 기술적 인 부분을 다시로드 할 필요없이 빠른 웹 개발 기술 동적 웹 응용 프로그램, 업데이트 할 수 있습니다.
뒤에서 서버와 적은 양의 데이터를 교환함으로써, Ajax는 비동기 페이지 업데이트를 할 수 있습니다. 이 수단은 그 페이지의 특정 부분에 대한 전체 페이지를 다시로드하지 않고 업데이트 할 수 있습니다.

그것은 거실, 부엌과 욕실을 정의하는 임대와 같은 HTML 웹 프레임 워크를 번역하지만, 어떤 상관없이 넣어. 이 때, 고객의 도착, 거실, 주방, 욕실 (JavaScript)를 장식. 다음 고객은 여전히 ​​그녀의 방 (앞 페이지 표시)를 장식하는 임대이 공간을 사용할 수있는 경우. 아약스 요청 및 전송 데이터, 그리고 마지막으로 웹 로딩이 데이터의 위치 (XHR)를 렌더링 형식은 명확합니다.

II. 객체 지향 프로그래밍

전체 코드의 완성은 많은 기능에 내장되어 있습니다. 각 패키지의 기능은 방법 (또한 함수)이고, 개별 객체에 대한 호출한다. 여기 개체 확실히 내 객체 6_6하지 대상이 아니며,. 객체 지향 명백한 이점이 만 실제로 몸 전체에 영향을 미치지 함수 내에서 처리해야하는 유지 보수 업그레이드 후, 매우 편리 매개 변수 수정 시간입니다. 예를 들어, 같은 코끼리는 냉장고에 넣어 : 프로세스 지향 프로그래밍이 필요합니다 (? 코끼리 심장 OS가 내가 잘못을하고있는 중이 야) 냉장고를 열기; 코끼리에 냉장고를 종료합니다. 객체 지향 프로그래밍 필요 냉장고 개구 정의 방법, 코끼리에있어서 정의를 상기 도어 개폐 정의, 방법의 주요 기능으로 정의 (주 ()) 및 방법은 상술 부른다.
여기서, 훨씬 더 복잡한 객체 지향 프로그래밍을 보인다. 그러나 새로운 코끼리를로드 할 때, 당신은 프로세스 지향 프로그래밍이 될 것입니다을 변경할 때 : 코끼리 (내 머리 냉장고를 원하는 _ ), 변경 후에는 냉장고 도어의 방법 (새로운 정의 냉장고 문을 닫고 머리를 종료 ) 및 객체 지향 프로그래밍은 코끼리, 새 냉장고 내부의 새로운 주요 기능을 수정해야합니다. 이 편리한 곳입니다.

대한 III. 단계

단계를 기입하십시오

개구 웨이 보 페이지 후 마이크로 보를 표시하는 각각의 드롭 다운 결국 새로 고침. 소스 코드를 연구, 정보의 HTML 내부에없는, 추측은 아약스의 동적 로딩해야한다. 열기 XHR은, 각각의 마이크로 블로그의 주소를 찾을 수 있습니다. 그래서 아이디어는 아마 나왔다 :

  1. : 각 동적 URL을 찾을 수 있습니다, JSON을 구문 분석, 홈을 가져옵니다.
  2. 텍스트, 시간, 장비, 코멘트 포인트와 처음 다섯 개 의견처럼 전달의 번호를, 동적, 분석 JSON을 가져옵니다.
  3. : 저장.
    정보 페이지를 크롤링

2. 가져 오기 라이브러리, 가정 및 헤더

라인에 채우기를 추가 할 필요가 후 무엇을 먼저 가져 오기 요청.

각 동적 URL을 얻을 방법을 정의합니다

여기에서 우리는 큰 문제를 발견! ! ! 오프셋 미세 공정을 생각 = '/ D'컴퓨터가 준비 떨어져 다른 페이지를 슬라이스, 내 결과를 보자, 나는 전체 일반 since_id을 찾을 수 있도록이 있었다, 전체 길이 때문에 전체 URL이 :

urls = ['https://m.weibo.cn/status/IvxUIvnzi?mblogid=IvxUIvnzi&luicode=10000011&lfid=1076032830678474',
    'https://m.weibo.cn/status/IyieDa0M1?mblogid=IyieDa0M1&luicode=10000011&lfid=1076032830678474',
    'https://m.weibo.cn/status/Ix2jNtRNI?mblogid=Ix2jNtRNI&luicode=10000011&lfid=1076032830678474'

이 mblogid 법을 찾을 수 없습니다 제외하고 예, 모든 필드는 동일합니다.
그리고 다음이 구글과 CTRL + 것은 CSDN는 각 페이지 [ 'cardlistInfo'] [ "since_id의 원본 데이터에 숨겨진 발견 발견 "] 아래. 과제를 해결한다.
이때, 동적 취득 방법 복귀 각각 두 개의 파라미터 : since_id, list_each_page.
찾기 노드

제 10 루프 내부 주요 기능 전

기본 매개 변수에 우선 (A URL의 첫 번째 매개 변수) 페이지의 동적 URL을 가지고 각 루프 다시 20 크롤링 순환을 위해, sence_id.
상대 ID

5. 본 방법은 각각의 동적 정보를 획득하기 위해 정의

정보가 다양하고 참을 흩어져있다,이 시간 청소 및 서식 데이터가 특히 중요합니다! 이전 기사에서 라이브러리의 XPath, BS4 및 pyquery을 구문 분석에 대한 이야기 가 너무 복잡하기 때문에, 언급 정규식이 없습니다. 그러나 다시 정말 절대 무기 문자열 (문자열)를 운영, 당신은 문자열에 모든 작업을 처리 할 수 있다고 기대할 수 없습니다. 예를 들어, 텍스트와 시간에 이렇게. 이 같은 배수 첸, 물이 추출 필드 Mblogid 필요 :

import re
url = 'https://m.weibo.cn/status/IvxUIvnzi?mblogid=IvxUIvnzi&luicode=10000011&lfid=1076032830678474'
each_url_right = re.findall('.*mblogid=(.*?)&.*',url)

이 단계는 문제가되지 않습니다. 구문 분석 JSON 사전은 각주의하시기 중첩 된 목록 경우를 제외하고.

주행 6. 주요 기능의 main ()

테스트 실행 여러 번 잘못된 데이터 오류가있을 것이라는 점을 발견했다. 나중에 함께 시도와 함께 ... 필드를 제외하고 매끄러운 마무리를하는 과정을 보장합니다. 문제가 여전히 목록 안쪽에가는 URL 기능으로 가져 오기 후 목록의 단일 반복 한 후, 그것을 이해되지 않는 이유, 시간 유형 () 인덱스의 값을 받아 직접 인쇄 후 이해하는 생각도있다.

7. 저장 CSV

저장에서 엑셀,하지만 관련 사전을 저장할 수있는 방법은 없습니다. 나는 CSV에서 csv.DictWriter () 방법을 선택할 수 있도록.
때마다 라인이 더 헤더를 기록 처음으로, 헤더 방법, 쓰기 콘텐츠에 대한 방법을 쓰기.
"줄 바꿈 = ''"추가 할 때 두 번째 시간은 검색 바이두 후 빈 줄은 파일을 열 필요가
성공적으로 해결!
결과는 크롤링 후 어떻게 엑셀을 보여줍니다.
뛰어나다

결론 비고

시간은 화면의 앞에 마지막 공연의 모든 데이터는 의심 할 여지없이 밖으로 '마이크로 블로깅이 .md 크롤링 아약스 데이터를 시도'구성 할 밤 시간에 여기되고, 오후에 세 목요일 11 : 00 ~,에 의해 번쩍, 개인 공유로 간주 될 약간의 경험과 지식. 소스 코드에서의 마지막 공연.
근원

출시 두 원저 · 원 찬양 8 · 조회 799

추천

출처blog.csdn.net/m0_46683744/article/details/105279784