Как веб-скрап с двух сайтов и печатать в Excel? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть файл Excel с именем 'MLB_names.xlsx'.В этом файле у меня есть один лист с именем «Домой», содержащий формулы, которые я хотел бы сохранить.(Лист 1)

Я пытаюсь добавить в этот файл Excel два веб-фрагмента.Я хотел бы, чтобы первый веб-скетч, MLB batters, был напечатан на новом листе под названием «batters».(Лист 2)

Мне бы хотелось, чтобы второй скребок для веб-страниц, кувшины MLB, был напечатан на новом листе под названием «Кувшины».(Лист 3)

Ниже приведу дополнительную информацию о проекте ...

Лист 1): «Домой»

Этолист я уже сохранил.Я хотел бы сохранить формулы в этом листе, если это возможно.

Лист 2): «Баттерс»

Я соскоблил все имена и возрасты Баттеров MLB 2018 года.

Вот код моего первого успешного скребка:

#import modules

from urllib.request import urlopen
from lxml.html import fromstring    
import pandas as pd

#fetch batting url

url = "https://www.baseball-reference.com/leagues/MLB/2018-standard-batting.shtml"

#remove HTML Markup

content = str(urlopen(url).read())
comment = content.replace("-->","").replace("<!--","")
tree = fromstring(comment)

#create column titles

columns = ("names", "age")
df = pd.DataFrame(columns=columns)    

#parse HTML

for idx, pitcher_row in enumerate(tree.xpath('//table[contains(@class,"stats_table")]//tr[contains(@class,"full_table")]')):
    names = pitcher_row.xpath('.//td[@data-stat="player"]/a')[0].text
    age = pitcher_row.xpath('.//td[@data-stat="age"]/text()')[0]        

    #create dataframe
    df.loc[idx] = (names, age)

    #print data 
    writer = pd.ExcelWriter('MLB_names.xlsx')
    df.to_excel(writer, 'Sheet1')
    writer.save()

Лист 3): «Кувшины»

Теперь для моего 2-го скрапа... Это в основном та же самая кодировка, но теперь для кувшинов:

#import modules

from urllib.request import urlopen
from lxml.html import fromstring    
import pandas as pd

#fetch pitching url

url = "https://www.baseball-reference.com/leagues/MLB/2018-standard-pitching.shtml"

#remove HTML Markup

content = str(urlopen(url).read())
comment = content.replace("-->","").replace("<!--","")
tree = fromstring(comment)

#create column titles

columns = ("names", "age")
df = pd.DataFrame(columns=columns)    

#parse HTML

for idx, pitcher_row in enumerate(tree.xpath('//table[contains(@class,"stats_table")]//tr[contains(@class,"full_table")]')):
    names = pitcher_row.xpath('.//td[@data-stat="player"]/a')[0].text
    age = pitcher_row.xpath('.//td[@data-stat="age"]/text()')[0]        

    #create dataframe
    df.loc[idx] = (names, age)

    #print data 
    writer = pd.ExcelWriter('MLB_names.xlsx')
    df.to_excel(writer, 'Sheet2')
    writer.save()

Просто чтобы повторить то, что я ищу ...

1) поддерживать лист "Home" с формулами.

Не уверен, должен ли я использовать следующий код для этого шага:

import pandas as pd
from pandas import read_excel

my_sheet_name = 'Home'
df = read_excel('MLB_names.xlsx', sheet_name = 'Home')

2) инициировать очистку 1 и очистку 2

Эта часть была завершена.Я мог бы использовать помощь в создании двух отдельных фреймов данных, поэтому я могу выполнить следующий шаг.

3) печать в Excel с использованием панд

лист 1) «Дом» остается в такте с формулами

лист 2) «баттерс»

лист 3) «кувшины»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...