파이썬 파충류의 타이거 테니스 선수의 점수 데이터를 두들겨 얻을

1 소개

  현재 정규 표현식으로 업데이트 내 파충류 시리즈, 우리는 몇 가지 간단한 페이지를 크롤링 라이브러리 요청 + 정규 표현식을 사용할 수 있습니다. 나는 개인적으로 플레이 농구 같은, 그래서 크롤링 대상으로 타이거 두들겨 네트워크를 선택했기 때문에. 물론, 이것은 나중에 타이거 네트워크 데이터를 강타 크롤링 구문 분석 라이브러리를 작성하는 데 사용할 것, 단지 엔트리 레벨의 경우입니다.

2, 웹 분석

  당신이 사이트를 크롤링 할 데이터는, 당신은 사이트의 페이지 소스 코드를 분석해야합니다. 이 경우, 득점에 NBA를 열고, 브라우저 타이거 학대 네트워크를 통해 로그온, 전체 URL은 다음과 같습니다 타이거 득점에 네트워크 NBA 전투 .
  현재 다섯 전체, 237 플레이어의 총 득점, 첫 모자이크 수비수 득점.
그림 삽입 설명 여기
  URL을 구성하는 상기 제 2 페이지, 제 페이지 분석 클릭이다 https://nba.hupu.com/stats/players/pts/2,https://nba.hupu.com/stats/players/ PTS /. 3 , 페이지 수에 마지막 변화는 URL은 문자열 연결하여 구성 할 수 있습니다. F12는 소스 코드를 보려면 클릭 선수가 players_table라는 데이터 테이블 클래스에있는 것을 발견, 선수 데이터가 각 TR에 있지만, 첫 번째 줄 첫 번째 줄을하기 때문에,이 배출 라인에주의를 기울 있도록 크롤링 할 필요가 없습니다 이동합니다.
그림 삽입 설명 여기

3, 코딩

첫째, GET HTML하는 방법을 정의

def getHtml(pageNum):
    '''
    传入参数页数,获得该链接的HTML内容
    :param pageNum: 页数
    :return: HTML内容
    '''
    url = "https://nba.hupu.com/stats/players/pts/" + str(pageNum)
    response = requests.get(url=url)
    if response.status_code == 200:
        return response.text
    else:
        return None

둘째, 정규 표현식의 정의는, 다시 라이브러리 findall은 ()의 사용은 정규 표현식과 일치의 모든 컨텐츠를 가져옵니다

def getData():
    pointList = []  # 定义一个列表存储数据
    regExp = '<tr>.*?<a.*?>(.*?)</a>.*?<a.*?>(.*?)</a>.*?"bg_b">(.*?)<.*?</tr>'# 定义一个正则表达式,获取球员名称,球队和得分数据
    for i in range(1,6):
        html = getHtml(i)
        # print(html)
        results = re.findall(regExp,html,re.S)
        for result in results:
            pointList.append(result)
    return pointList

출력은 다음과 같습니다
그림 삽입 설명 여기

4, 전체 코드

import re
import requests

def getHtml(pageNum):
    '''
    传入参数页数,获得该链接的HTML内容
    :param pageNum: 页数
    :return: HTML内容
    '''
    url = "https://nba.hupu.com/stats/players/pts/" + str(pageNum)
    response = requests.get(url=url)
    if response.status_code == 200:
        return response.text
    else:
        return None

def getData():
    pointList = []  # 定义一个列表存储数据
    regExp = '<tr>.*?<a.*?>(.*?)</a>.*?<a.*?>(.*?)</a>.*?"bg_b">(.*?)<.*?</tr>'# 定义一个正则表达式,获取球员名称,球队和得分数据
    for i in range(1,6):
        html = getHtml(i)
        # print(html)
        results = re.findall(regExp,html,re.S)
        for result in results:
            pointList.append(result)
    return pointList

if __name__ == '__main__':
    pointList = getData()
    for list in pointList:
        print(list)

잘못된 장소를 표시하시기 바랍니다! 당신이 칭찬을 줄 수있는 경우에 문제가 있다는 생각! 우리는 코멘트 섹션 또는 개인 편지 교환을 환영합니다!

게시 30 개 원래 기사 · 원 찬양 72 ·은 10000 +를 볼

추천

출처blog.csdn.net/Orange_minger/article/details/104793890