Как скрести имя и команду кувшина? - PullRequest
0 голосов
/ 28 августа 2018

Я новичок в чистке / кодировании и могу по возможности использовать помощь.

  from bs4 import BeautifulSoup
  import requests
  import pandas as pd

  page_link ='https://www.baseball-reference.com/previews/index.shtml'
  page_response = requests.get(page_link, timeout=5)
  soup = BeautifulSoup(page_response.content, "html.parser")

Мне нужна помощь в поиске подходящего способа найти имя и команду питчера.

(только примеры :)

  player_name = [i.text for i in soup.find_all('td', {'href': 'example-name'})]

  team = [i.text for i in soup.find_all('td', {'href': 'example-team'})]  

Здесь я экспортирую в Excel:

  my_dict = dict(zip(player_name, team))

  df = pd.DataFrame(pd.Series(my_dict))

  writer = pd.ExcelWriter('pitching_webscrape.xlsx')
  df.to_excel(writer,'Sheet1')
  writer.save()

Я бы хотел, чтобы имя питчера и команда были импортированы в Excel. Заранее спасибо за помощь! Пожалуйста, дайте мне знать, если я могу улучшить свой вопрос или добавить более подробную информацию.

Вот код, который у меня был до сих пор:

  from bs4 import BeautifulSoup
  import requests
  import pandas as pd
  page_link ='https://www.baseball-reference.com/previews/index.shtml'
  page_response = requests.get(page_link, timeout=5)
  soup = BeautifulSoup(page_response.content, "html.parser") 

Мой первый код:

  t = soup.find_all('td')
  print(t)  

Мой первый вывод:

[ Блю Джейс (60-70),, Предварительный просмотр , Иволги (37-94), 19:05 , TOR , Сэм Гавильо
(# 43, 28, RHP, 3-6, 4.94), BAL , Дэвид Хесс
(# 41, 24, RHP, 2-8, 5.50), White Sox (51-79),

Мой второй код:

  t = soup.find_all('td')
  for a in t:
      print(a.text)  

Мой второй вывод:

Блю Джейс (60-70)

Предварительный просмотр

Иволги (37-94)

7: 05 PM

TOR Сэм Гавильо (№ 43, 28, RHP, 3-6, 4,94) BAL Дэвид Хесс (№ 41, 24, RHP, 2-8, 5.50) Уайт Сокс (51-79)

Я все ближе, но мне нужны только имена игроков и команды. (т. е. TOR, Сэм Гавильо). Я также хочу импортировать это в Excel. Спасибо! =)

1 Ответ

0 голосов
/ 28 августа 2018

Если вы просто хотите одного list игроков и команд, то этого должно быть достаточно:

import re
players_and_teams = []

for i in soup.find_all('td'):
    if i.find_all('a'):
        for link in i.find_all('a'):
            if not re.findall(r'Preview',link.text):
                players_and_teams.append(link.text)
...