초보자 파이썬 자습서는 홈 네트워크의 체인을 크롤링

머리말

네트워크에서 텍스트와 이미지의 텍스트,뿐만 아니라 상업적 목적, 저자에 소유하여, 교환 내용, 질문이있는 경우, 치료를 위해 문의하시기 바랍니다.

저자 : TinaLY

PS : 필요한 파이썬 학습 자료는 작은 파트너에 추가 할 수 있다면 자신을 얻기 위해 아래 링크를 클릭

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

많은 온라인 자습서 크롤링하지만, 일반적으로 두 가지 문제가있다 :

첫째, 그는 디버깅 버그가 많이 발생합니다, 일반적으로 오히려 미친 어려운 코드를 디버깅에 사용할 수 없습니다;

둘째 : 페이지 데이터의 형식이 완전히 정기적으로하지 않기 때문에, 문제가 발생할 수 있습니다 코드 블록을 찾고, 저장 시간이 없었다 데이터 앞에 크롤링 방지하기 위해, 메커니즘을 throw되는 예외를 설정해야합니다, 시간과 노동 집약적 인.

이것은, 크롤링 데이터의 소량을 제공 할 수 열려있는만큼 코드를 열고, 자신의 경험을 기반으로합니다.

  • 구조, 주로 셀레늄을 크롤링하여 페이지가 지속적으로 공개됩니다.

  • 코드가 지역 변경주기에 익숙 할 수 있습니다 후 제남시의 케이스, 소규모 테스트로, 단일 행정 구역 취득했다.

다음과 같이 코드입니다 :

주요 패키지 :

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 =

 

추천

출처www.cnblogs.com/Qqun821460695/p/11917940.html