[Xiaobai должен увидеть] Python сканирует пример данных об игроках НБА


вставьте сюда описание изображения

предисловие

Пример кода для сканирования данных об игроках НБА с помощью Python. Отправив HTTP-запрос, проанализируйте HTML-страницу, затем извлеките необходимую информацию о рейтинге, имени, команде и счете и сохраните результат в файл.

Импорт необходимых библиотек и модулей

вставьте сюда описание изображения

import requests
from lxml import etree
  • Используйте requestsбиблиотеку для отправки HTTP-запросов.
  • Используйте lxmlбиблиотеку для разбора HTML.

Установить заголовок запроса и адрес запроса

вставьте сюда описание изображения

url = 'https://nba.hupu.com/stats/players'
headers ={
    
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
  • Установить информацию заголовка запроса, включая User-Agent.
  • Установите адрес запроса «https://nba.hupu.com/stats/players».

Отправить HTTP-запрос и получить ответ

вставьте сюда описание изображения

resp = requests.get(url, headers=headers)
  • Используйте requestsбиблиотеку для отправки HTTP-запроса GET и передачи URL-адреса запроса и информации заголовка запроса.
  • Сохраните возвращенный ответ в переменной resp.

Обработать результат ответа

вставьте сюда описание изображения

e = etree.HTML(resp.text)
  • Используйте etree.HTMLфункции для синтаксического анализа возвращенного текста ответа в активный объект дерева элементов HTML.
  • Сохраните проанализированный результат в переменной e.

Аналитические данные

вставьте сюда описание изображения

nos = e.xpath('//table[@class="players_table"]//tr/td[1]/text()')
names = e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')
teams = e.xpath('//table[@class="players_table"]//tr/td[3]/a/text()')
scores = e.xpath('//table[@class="players_table"]//tr/td[4]/text()')
  • Используйте выражения XPath для извлечения необходимых данных из дерева элементов HTML.
  • Сохраните рейтинг (nos), имена (names), команды (teams) и баллы (scores) в соответствующих переменных.

сохранить результат в файл

with open('nba.txt', 'w', encoding='utf-8') as f:
    for no, name, team, score in zip(nos, names, teams, scores):
        f.write(f'排名:{
      
      no} 姓名:{
      
      name}  球队:{
      
      team} 得分:{
      
      score}\n')
  • Откройте файл nba.txtдля режима записи ('w') и кодировки UTF-8.
  • Используйте zipфункцию для одновременного перебора рейтингов, имен, команд и результатов, объединяя их в кортеж.
  • Запишите данные каждой строки в файл в соответствии с указанным форматом.

полный код

# 引入 requests 库,用于发送 HTTP 请求
import requests
# 引入 lxml 库,用于解析 HTML
from lxml import etree

# 设置请求的地址
url = 'https://nba.hupu.com/stats/players'
# 设置请求头信息,包括用户代理(User-Agent)
headers ={
    
     
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}

# 发送HTTP GET请求,并传入请求地址和请求头信息,将返回的响应保存在变量resp中
resp = requests.get(url, headers=headers)

# 使用etree.HTML函数将返回的响应文本解析为一个可操作的HTML元素树对象
e = etree.HTML(resp.text)

# 使用XPath表达式从HTML元素树中提取需要的数据
nos = e.xpath('//table[@class="players_table"]//tr/td[1]/text()')
names = e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')
teams = e.xpath('//table[@class="players_table"]//tr/td[3]/a/text()')
scores = e.xpath('//table[@class="players_table"]//tr/td[4]/text()')

# 打开一个文件`nba.txt`,以写入模式('w')进行操作,编码方式为UTF-8
with open('nba.txt', 'w', encoding='utf-8') as f:
    # 使用zip函数同时遍历排名、姓名、球队和得分,将它们合并成一个元组
    for no, name, team, score in zip(nos, names, teams, scores):
        # 将每一行的数据按照指定格式写入文件中
        f.write(f'排名:{
      
      no} 姓名:{
      
      name}  球队:{
      
      team} 得分:{
      
      score}\n')

подробный анализ

# pip install requests
import requests

Импортируйте requestsбиблиотеку, которая используется для отправки HTTP-запросов.

# pip install lxml
from lxml import etree

Импортируйте lxmlбиблиотеку, которая используется для разбора HTML.

# 发送的地址
url = 'https://nba.hupu.com/stats/players'

Установите адрес, на который необходимо отправить запрос.

headers ={
    
     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'}

Установить информацию заголовка запроса, включая User-Agent. Эта информация сообщает серверу, что наш запрос отправлен из браузера, а не сканера, чтобы избежать блокировки механизмом антикраулера.

# 发送请求
resp = requests.get(url,headers = headers)

Используйте requests.getметод для отправки HTTP-запроса GET и передачи URL-адреса запроса и информации заголовка запроса. Сохраните возвращенный ответ в переменной resp.

e = etree.HTML(resp.text)

Используйте etree.HTMLэту функцию, чтобы преобразовать возвращенный текст ответа в активный объект дерева элементов HTML. etree.HTMLПринимает параметр типа string, используемый здесь resp.textдля получения текстового содержимого ответа.

nos = e.xpath('//table[@class="players_table"]//tr/td[1]/text()')
names = e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')
teams = e.xpath('//table[@class="players_table"]//tr/td[3]/a/text()')
scores = e.xpath('//table[@class="players_table"]//tr/td[4]/text()')

Используйте выражения XPath для извлечения необходимых данных из дерева элементов HTML. Здесь четыре выражения XPath используются для извлечения данных о рейтинге, имени, команде и счете и их сохранения в переменных , nosи соответственно .namesteamsscores

with open('nba.txt','w',encoding='utf-8') as f:
    for no,name,team,score in zip(nos,names,teams,scores):
        f.write(f'排名:{
      
      no} 姓名:{
      
      name}  球队:{
      
      team} 得分:{
      
      score}\n')

Откройте nba.txtфайл с именем в режиме записи ('w') и используйте кодировку UTF-8. Затем используйте zipэту функцию для одновременного перебора ранга, имени, команды и счета, объединяя их в кортеж. Перебирая каждый кортеж, запишите данные каждой строки в файл в соответствии с указанным форматом.

Таким образом, код реализует сканирование данных об игроках НБА и сохраняет результат в nba.txtфайл.

текущий результат

вставьте сюда описание изображения

заключение

С помощью примера кода в этой статье вы узнаете, как использовать Python для обхода данных игроков НБА. Мы использовали библиотеку запросов для отправки HTTP-запросов, библиотеку lxml для анализа HTML и выражения XPath для извлечения необходимых данных. Наконец, сохраните результат в файл. Этот пример может помочь вам понять основные принципы и этапы работы сканера, а также получить данные об игроках НБА. Я надеюсь, что эта статья поможет вам понять и освоить технологию поисковых роботов Python.

Supongo que te gusta

Origin blog.csdn.net/qq_33681891/article/details/131974796
Recomendado
Clasificación