네트워크에서 텍스트와 이미지의 텍스트,뿐만 아니라 상업적 목적, 저자에 소유하여, 교환 내용, 질문이있는 경우, 치료를 위해 문의하시기 바랍니다.
저자 : TinaLY
PS : 필요한 파이썬 학습 자료는 작은 파트너에 추가 할 수 있다면 자신을 얻기 위해 아래 링크를 클릭
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
많은 온라인 자습서 크롤링하지만, 일반적으로 두 가지 문제가있다 :
첫째, 그는 디버깅 버그가 많이 발생합니다, 일반적으로 오히려 미친 어려운 코드를 디버깅에 사용할 수 없습니다;
이것은, 크롤링 데이터의 소량을 제공 할 수 열려있는만큼 코드를 열고, 자신의 경험을 기반으로합니다.
-
구조, 주로 셀레늄을 크롤링하여 페이지가 지속적으로 공개됩니다.
-
코드가 지역 변경주기에 익숙 할 수 있습니다 후 제남시의 케이스, 소규모 테스트로, 단일 행정 구역 취득했다.
다음과 같이 코드입니다 :
주요 패키지 :
1 에서 셀레늄 오기 webdriver 2 에서 URLLIB의 반입 요청을 파싱 3 에서 selenium.common.exceptions가 가져 는 NoSuchElementException을
정의 매개 변수 (높은 도덕적 API의 처음 세 줄은, 네 번째 줄은 도시를 크롤링 한 후 일반 웹 링크가있을 것입니다 좌표 획득을 얻는 데 사용됩니다)
1 amap_web_key = ' 你的키 ' 2 poi_search_url = " http://restapi.amap.com/v3/place/text " 3 poi_boundary_url = " https://ditu.amap.com/detail/get/detail " 4 도시 = ' 지난 '
키 코드 :
. 1 헤더 = { ' User-- 에이전트 ' : ' 모질라 / 5.0 (윈도우 NT 10.0하며 WOW64) AppleWebKit / 537.36 (KHTML, 도마뱀 등) 크롬 / 29.0.1547.57 사파리 / 537.36 ' } 이 드라이버 1 = webdriver.Chrome () . 3 페이지 id . (1) = 4. 그동안 (페이지 id <= ' 페이지 번호 ' ) // 페이지 번호 여기 영역에 진입 한 후 표시되는 페이지의 수를 말한다 . 5 allarray = [] . 6 전단 ( ' 페이지 id = ' , 페이지 id) . 7 URL = " https://jn.lianjia.com/xiaoqu/pingyin/pg ' +STR (페이지 id) 8 driver1.get (URL) 9 driver1.implicitly_wait (5 ) 10 house_list = driver1.find_elements_by_class_name ( " IMG " ) (11) 에 대한 I 의 범위 (house_list. __len__ ()) : 12 time.sleep (2 ) 13 temparray = [] 14 detailurl house_list = [I] .get_attribute ( ' HREF ' ) 15 잉크 (I, ' detailurl ' , detailurl) 16 드라이버 =webdriver.Chrome () . 17 driver.get (detailurl) (18)는 은 try : . 19 housename driver.find_element_by_class_name = ( ' detailTitle ' 는 .text) 20 . 가격 driver.find_element_by_class_name = ( ' xiaoquUnitPrice ' 는 .text) (21)은 = driver.find_elements_by_class_name (xiaoquinfo ' xiaoquInfoContent ' ) 22 # [면적, 구역, 용적률, 녹색 레이트, 주차 공간, BAN의 총 수, 가구의 총 수, 등록 업체 등록 비용, 속성 정보, 바닥 상태 건물] 23 xiaoquage = xiaoquinfo [0]는 .text # 건물 (24) = jianzhuleixing [1]는 .text xiaoquinfo #이 유형 건물 25 wuyefei = xiaoquinfo [2]는 .text #의 속성 전하 26 dongshu = xiaoquinfo [5]는 .text #의 총 BAN 27 Hushu = xiaoquinfo [6]는 .text # 주택의 총계 28 TempArray을 으로 .Append (housename) 29 temparray.append. (가격) 30 temparray.append (jianzhuleixing) #의 가정 31 temparray.append (wuyefei)는 #의 특성은 비용 32 temparray.append (dongshu) #의 체적비 33 temparray.append (Hushu) # 녹색 속도 (34)입니다 # = getpoi_page (TempArray가 [0]) 함수를 좌표 드 높은와 API 호출을 받기 LOCATION // 35 #을 좌표 높은 데 쿼리 (36) // 궁극적 인 목표 세포가 가을에지도를받을 점의 좌표를 얻기 위해, 높은 도덕적 개방형 API를 사용할 수 있지만, 필요에 37 // 쿼리의 제한된 수의 핵심은 오류의 중간을 방지하기 위해, 그것은 첫 번째 세트까지 결국 주거 자료는 것이 좋습니다 인해 38 //이 에 대한 검색을 조정 통합 초보자는 쉽게 모든 메인을 달성하기 위해! 39 temparray.append ( ' 0 ' ) 40 temparray.append는 ( ' 0 ' ) (41)는 # (LOCATION == '') IF (42)는 #은 temparray.append ( '0') (43)는 # temparray.append는 ( '0') (44)가된다 # 다른 : 45 # temparray.append (LOCATION [0])는 46이다 # temparray.append (LOCATION [1.]) 47 # BREAK 48 # 프린트 (TempArray) 49 를 제외하고 는 NoSuchElementException AS의 메시지 : 50 // 같은 Taobao의, 알리바바와 다른 HTML 태그 페이지로 예외 발생 기능이 매우 중요하지만은, 통일 된 형식이 51 // 하지만 경험이 풍부한 어린이 신발은 항상있을 것이라는 점을 알아야한다 예외 메커니즘을 쓰기 발생하는 경우 하나 또는 두 개의 일상적으로 재생되지 않습니다 (52) // 아니라, 종종 쉽게 수포로 오는 53 # 인쇄 ( "첫 번째", 난을 "셀 탐색 요소 실패") (54) 은 try: 55 housename driver.find_element_by_class_name = ( ' detailTitle ' 는 .text) (56)는 가격 = driver.find_element_by_css_selector ( " [클래스 = '클리어 xiaoquPrice'] " 는 .text) 57 // 예외가 발생하기 때문에, 알 수있는 비교 가격 위에 가격표 특성 두 있었다 58 xiaoquinfo = driver.find_elements_by_class_name ( ' xiaoquInfoContent ' ) 59 # [면적, 구역, 용적률, 녹색 레이트, 주차 공간, BAN의 총 수, 가구의 총 수를 구축 속성 회사 재산 수수료 속성 정보 층 도금 조건] 60 xiaoquage xiaoquinfo = [0]는 .text #의 건물 (61) jianzhuleixing는 xiaoquinfo = [1]는 .text # 빌딩 타입 62 wuyefei = xiaoquinfo [2]는 .text #의 속성 전하 63 dongshu = xiaoquinfo [5]는 .text # 총 BAN 64 Hushu = xiaoquinfo [6]는 .text # 주택의 총계 65 temparray.append (housename) 66 TempArray. 추가]. (가격) 67 temparray.append (jianzhuleixing) #의 가정 68 temparray.append (wuyefei) #의 특성은 비용 69 temparray.append (dongshu) #의 체적비 70 temparray.append (Hushu) # 녹색 비율 71은 temparray.append ( ' 0 ' ) 72 (temparray.append ' 0 ' ) (73)는 제외 : MSG는 NoSuchElementException AS 74 인쇄 ( " 두 경우에서 찾을 " ) 75 allarray.append을 (TempArray) 76 driver.close () 77 text_save (allarray, ' lianjia_fangwu.txt ' ) 78 페이지 id의 +. 1 =