Python 파충류 의 자동 기어 오 르 기 모 차 의 집 각 차 판매 데이터

1.목표 웹 페이지 분석
목표 사 이 트 는 한 차 의 집 이 브랜드 자동차 차형 에 관 한 입 소문 모듈 과 관련 된 데이터 이다.예 를 들 어 우리 가 보 여 준 사례 Q5L의 입 소문 페이지 는 다음 과 같다.
https://k.autohome.com.cn/4851/#pvareaid=3311678
프 리 젠 테 이 션 방식 을 위해 서 는 위 에 있 는 이 사 이 트 를 직접 열 고 모든 입 소문 위치 로 끌 어 올 려 서 우리 가 이번 채집 에 필요 한 필드 를 찾 을 수 있 습 니 다.아래 그림 과 같 습 니 다.
Image
채집 필드
우 리 는 페이지 를 넘 겨 서 브 라 우 저 사이트 에 변화 가 생 겼 음 을 발 견 했 습 니 다.여러분 은 다음 몇 페이지 의 사이트 주소 에 대해 규칙 을 찾 을 수 있 습 니 다.

https://k.autohome.com.cn/4851/index_2.html#dataList
https://k.autohome.com.cn/4851/index_3.html#dataList
https://k.autohome.com.cn/4851/index_4.html#dataList
위 에 적 힌 사이트 주소 에 대해 우 리 는 가 변 적 인 부분 이 차형(예 를 들 어4851과 페이지(예 를 들 어2,3이라는 것 을 발견 했다.그래서 우 리 는4인 자 를 다음 과 같이 구축 할 수 있다.

# typeid   ,page   
url = f'https://k.autohome.com.cn/{typeid}/index_{page}.html#dataList'
2.데이터 요청
간단 한 테스트 를 통 해 역 기어 오 르 기 가 없 는 것 같다 는 것 을 발견 하면 간단 하 다.
우 리 는 먼저 필요 한 라 이브 러 리 를 도입 합 니 다.

import requests
import pandas as pd
import html
from lxml import etree
import re
그리고 데이터 요청 함 수 를 만 듭 니 다:

#       (       typeid    )
def get_html(typeid,page):
    #        
    url = f'https://k.autohome.com.cn/{typeid}/index_{page}.html#dataList'
    #     (      ,              )
    r = requests.get(url)
    #                ,          
    r = html.unescape(r.text)
    #       
    return r
요청 한 데 이 터 는 바로 웹 페이지url텍스트 입 니 다.우 리 는 다음 에html로 총 몇 페이지 의 페이지 를 분석 한 다음 에re채집 필드 로 분석 합 니 다.
3.데이터 분석
페이지 를 넘 겨 야 하기 때문에,여기 서 우 리 는 먼저 re 정규 표현 식 을 통 해 전체 페이지 번 호 를 가 져 올 수 있 습 니 다.웹 페이지 데 이 터 를 보면 총 페이지 번 호 는 다음 과 같은 방식 으로 얻 을 수 있 습 니 다.

try:
    pages = int(re.findall(r' (\d+) ',r)[0])
#         ,             
except :
    print(f'{name}     !')
    continue
Image
총 페이지 채집
수집 대기 필드 정보 에 대해 우 리 는 모두 노드xpath에 있 는 것 을 발견 했다.먼저 이 노드 데 이 터 를 찾 은 다음 에 하나씩 분석 할 수 있다.
Image
채집 대기 필드 정보 소재 노드
그 밖 에 우 리 는 각 페이지 에서 최대 15 개의 차형 입 소문 데 이 터 를 발견 했다.그래서 우 리 는 각 페이지 에서 15 개의 수집 대기 정보 데이터 세트 를 찾 아 수집 코드 를 옮 겨 다 닐 수 있다.

divs = r_html.xpath('.//div[@class="mouthcon-cont-left"]')
#              
for div in divs:
    #              
    mt = div.xpath('./div[@class="choose-con mt-10"]')[0]
    #       
    infos = mt.xpath('./dl[@class="choose-dl"]')
    #       ,          
    item = {}
    #         
    for info in infos:
        key = info.xpath('.//dt/text()')[0]
        #          ,          
        if key == '    ':
            item[key] = info.xpath('.//dd/a/text()')[0]
            item['    '] = info.xpath('.//span[@class="font-arial"]/text()')[0]
        #           ,        id  ,   api          (    )
        elif key == '     ':
            #    id  
               id = info.xpath('.//dd/a/@data-val')[0] +','+ info.xpath('.//dd/a/@data-evalid')[0]
            #            
            jxs_url = base_jxs_url+   id+'|'
            #     ( json  )
            data = requests.get(jxs_url)
            j = data.json()
            #        
            item[key] = j['result']['List'][0]['CompanySimple']
        else:
            #      ,            
            item[key] = info.xpath('.//dd/text()')[0].replace("\r
","").replace(' ','').replace('\xa0','')
4.데이터 저장
역 기어 오 르 는 것 이 없 기 때문에 수집 한 데 이 터 를 직접div[@class="mouthcon-cont-left"]형식 으로 바 꾸 고pandas.DataFrame파일 로 저장 하면 된다.

df = pd.DataFrame(items)
df = df[['    ', '    ', '    ', '     ', '    ', '     ']]
#        
df.to_excel(r'      .xlsx',index=None,sheet_name='data')
5.채집 결과 미리보기
전체 파충류 의 과정 이 비교적 간단 하고 수집 한 데이터 도 비교적 규범 적 이다.본 고의 사례 인 아우디 Q5L 의 예 는 다음 과 같다.
Image
파 이 썬 파충류 가 모 차 의 집 차 별 판매 데 이 터 를 자동 으로 수집 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 이 자동차 판매 데 이 터 를 수집 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기