如何从两个网站抓取网页并打印到excel中?

时间:2018-09-27 02:10:30

标签: python pandas dataframe xpath web-scraping

我有一个名为'MLB_names.xlsx'的Excel文件。在此文件中,我有一个名为“主页”的工作表,其中包含我要保留的公式。 (第1页)

我正在尝试将两个Web剪贴簿添加到此excel文件。我想将第一个Web剪贴簿(MLB面糊)打印到名为“ batters”的新纸上。 (第2页)

我希望将第二个刮板(MLB投手)打印到名为“ pitchers”的新纸上。 (第3页)

我将在下面提供有关该项目的更多信息...

表1):“首页”

这是我已经保存的工作表。如果可能的话,我想保留此表中的公式。

表2):“击球员”

我已经刮除了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页):“投手”

现在是我第二次抓拍...基本上是相同的编码,但现在是投手:

#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)使用公式维护“主页”表。

不确定是否要在此步骤中使用以下代码:

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

这部分已经完成。不过,我可以使用帮助来创建2个单独的数据框,因此我可以完成下一步。

3)使用熊猫打印到excel

第1页)“首页” 与公式保持一致

第2页)“击球员”

第3页)“投手”

0 个答案:

没有答案