Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用不规则模式提取数据-Python Xpath_Python_Xpath - Fatal编程技术网

使用不规则模式提取数据-Python Xpath

使用不规则模式提取数据-Python Xpath,python,xpath,Python,Xpath,我正试图从中提取数据 页面如下所示: league_name, team_name, player_name AFC East, Buffalo Bills, EJ Manuel AFC East, Buffalo Bills, Tyrod Taylor AFC East, Buffalo Bills, Anthony Dixon ... AFC East, Miami Dolphins, Zac Dysert ... 页面上有一个联盟列表,如AFC East。每个联盟都有几支球队,比如水牛

我正试图从中提取数据 页面如下所示:

league_name, team_name, player_name
AFC East, Buffalo Bills, EJ Manuel
AFC East, Buffalo Bills, Tyrod Taylor
AFC East, Buffalo Bills, Anthony Dixon
...
AFC East, Miami Dolphins, Zac Dysert
...

页面上有一个联盟列表,如AFC East。每个联盟都有几支球队,比如水牛比尔队和迈阿密海豚队。每支球队(如布法罗比尔队)都有一长串球员名单

使用Xpath,我能够提取所有联赛的列表、所有球队的列表,以及“单独”提取所有球员的列表

但是,我希望实现的是这样的目标:

league_name, team_name, player_name
AFC East, Buffalo Bills, EJ Manuel
AFC East, Buffalo Bills, Tyrod Taylor
AFC East, Buffalo Bills, Anthony Dixon
...
AFC East, Miami Dolphins, Zac Dysert
...

如何做到这一点?提前感谢。

我将迭代与球队名称对应的每个
h3
元素,然后获得下一个
兄弟元素,其中包含球员信息。联盟名称将是前面的
h2
元素。完整的工作代码:

import requests
from lxml.html import fromstring


tree = fromstring(requests.get("https://en.wikipedia.org/wiki/List_of_current_AFC_team_rosters").content)

for h3 in tree.xpath("//div[@id='mw-content-text']//h3[span/@class='mw-headline']"):
    team_name = h3.xpath(".//a/text()")[0]
    league_name = h3.xpath("preceding-sibling::h2[1]//a/text()")[0]
    players = h3.xpath("following-sibling::table[1]//ul/li/a/text()")

    print(league_name, team_name, players)
印刷品:

AFC East Buffalo Bills ['EJ Manuel', 'Tyrod Taylor', 'Anthony Dixon', 'Jerome Felton', 'Mike Gillislee', 'LeSean McCoy', 'Karlos Williams', 'Leonard Hankerson', 'Marcus Easley', 'Marquise Goodwin', 'Percy Harvin', 'Dez Lewis', 'Walt Powell', 'Greg Salas', 'Sammy Watkins', 'Robert Woods', 'Charles Clay', 'Chris Gragg', "Nick O'Leary", 'Tyson Chandler', 'Ryan Groy', 'Seantrel Henderson', 'Cyrus Kouandjio', 'John Miller', 'Kraig Urbik', 'Eric Wood', 'T. J. Barnes', 'Marcell Dareus', 'Lavar Edwards', 'IK Enemkpali', 'Jerry Hughes', 'Kyle Williams', 'Mario Williams', 'Jerel Worthy', 'Jarius Wynn', 'Preston Brown', 'Randell Johnson', 'Manny Lawson', 'Kevin Reddick', 'Tony Steward', 'A. J. Tarpley', 'Max Valles', 'Mario Butler', 'Ronald Darby', 'Stephon Gilmore', 'Corey Graham', 'Leodis McKelvin', 'Jonathan Meeks', 'Merrill Noel', 'Nickell Robey', 'Sammy Seamster', 'Cam Thomas', 'Aaron Williams', 'Duke Williams', 'Dan Carpenter', 'Jordan Gay', 'Garrison Sanborn', 'Colton Schmidt', 'Blake Annen', 'Jarrett Boykin', 'Jonathan Dowling', 'Greg Little', 'Jacob Maxwell', 'Ronald Patrick', 'Cedric Reed', 'Cyril Richardson', 'Phillip Thomas', 'James Wilder, Jr.', 'Nigel Bradham', 'Ron Brooks', 'Alex Carrington', 'Cordy Glenn', 'Leonard Hankerson', 'Richie Incognito', 'Josh Johnson', 'Corbin Bryant', 'Stefan Charles', 'MarQueis Gray', 'Chris Hogan', 'Jordan Mills', 'Ty Powell', 'Bacarri Rambo', 'Cierre Wood']
AFC East Miami Dolphins ['Zac Dysert', 'Ryan Tannehill', 'Logan Thomas', 'Jay Ajayi', 'Jahwan Edwards', 'Damien Williams', 'Tyler Davis', 'Robert Herron', 'Greg Jennings', 'Jarvis Landry', 'DeVante Parker', 'Kenny Stills', 'Jordan Cameron', 'Dominique Jones', 'Dion Sims', 'Branden Albert', 'Jamil Douglas', "Ja'Wuan James", 'Vinston Painter', 'Mike Pouncey', 'Anthony Steen', 'Dallas Thomas', 'Billy Turner', 'Deandre Coleman', 'Quinton Coples', 'Terrence Fede', 'Dion Jordan', 'Earl Mitchell', 'Damontre Moore', 'Jordan Phillips', 'Ndamukong Suh', 'Charles Tuaau', 'Robert Thomas', 'Cameron Wake', 'Julius Warmsley', 'Jordan Williams', 'Neville Hewitt', 'Mike Hull', 'Jelani Jenkins', 'Terrell Manning', 'Chris McCain', 'Koa Misi', 'Zach Vigil', 'Walt Aikens', 'Damarr Aultman', 'Brent Grimes', 'Reshad Jones', 'Tony Lippett', 'Bobby McCain', 'Brice McCain', 'Tyler Patmon', 'Dax Swanson', 'Jamar Taylor', 'Matt Darr', 'John Denney', 'Andrew Franks', 'Louis Delmas', 'James-Michael Johnson', 'Rishard Matthews', 'Jacques McClendon', 'Lamar Miller', 'Matt Moore', 'Spencer Paysinger', 'Derrick Shelby', 'Kelvin Sheppard', 'Shelley Smith', 'Olivier Vernon', 'Michael Thomas', 'Brandon Williams', 'Shamiel Gary', 'Matt Hazel', 'Ulrick John', 'Jake Stoneburner']
AFC East New England Patriots ['Tom Brady', 'Jimmy Garoppolo', 'Brandon Bolden', 'Steven Jackson', 'James White', 'Danny Amendola', 'Julian Edelman', 'Brandon LaFell', 'Keshawn Martin', 'Matthew Slater', 'Scott Chandler', 'Rob Gronkowski', 'Michael Williams', 'Marcus Cannon', 'Cameron Fleming', 'Josh Kline', 'Bryan Stork', 'Sebastian Vollmer', 'LaAdrian Waddle', 'Alan Branch', 'Akiem Hicks', 'Chandler Jones', "Ishmaa'ily Kitchen", 'Rob Ninkovich', 'Jabaal Sheard', 'Sealver Siliga', 'Jon Bostic', 'Jamie Collins', 'Darius Fleming', 'Jonathan Freeny', "Dont'a Hightower", 'Dekoda Watson', 'Malcolm Butler', 'Patrick Chung', 'Nate Ebner', 'Duron Harmon', 'Leonard Johnson', 'Devin McCourty', 'Logan Ryan', 'Tavon Wilson', 'Ryan Allen', 'Stephen Gostkowski', 'LeGarrette Blount', 'Tarell Brown', 'James Develin', 'Aaron Dobson', 'Dominique Easley', 'Dane Fletcher', 'Tyler Gaffney', 'Brandon Gibson', 'Rufus Johnson', 'Chris Jones', 'Dion Lewis', 'Eric Martin', 'Jerod Mayo', 'Nate Solder', 'Brian Tyms', 'Ryan Wendell', 'Montee Ball', 'Chris Barker', 'Rashaan Melvin', 'Keavon Milton', 'Brock Vereen']
...
AFC West San Diego Chargers ['Kellen Clemens', 'Philip Rivers', 'Donald Brown', 'David Johnson', 'Danny Woodhead', 'Vincent Brown', 'Malcom Floyd', 'Javontee Herndon', 'Dontrelle Inman', 'Stevie Johnson', 'Asante Cleveland', 'Antonio Gates', 'Sean McGrath', 'John Phillips', 'Joe Barksdale', 'King Dunlap', 'Orlando Franklin', 'D. J. Fluker', 'Chris Hairston', 'Jeff Linkenbach', 'Trevor Robinson', 'J. D. Walton', 'Kenny Wiggins', 'Ryan Carrethers', 'Ricardo Mathews', 'Kendall Reyes', 'Damion Square', 'Jeremiah Attaochu', 'Donald Butler', 'Kavell Conner', 'Melvin Ingram', 'Cordarro Law', 'Joe Mays', 'Dexter McCoil', "Manti Te'o", 'Jahleel Addae', 'Matt Daniels', 'Greg Ducre', 'Adrian Phillips', 'Patrick Robinson', 'Brandian Ross', 'Jason Verrett', 'Steve Williams', 'Mike Scifres', 'Mike Windt', 'Keenan Allen', 'Chi Chi Ariguzo', 'Brandon Flowers', 'Ladarius Green', 'Sean Lissemore', 'Corey Liuget', 'Branden Oliver', 'Tenny Palepoi', 'Darrell Stuckey', 'Johnnie Troutman', 'Chris Watt', 'Eric Weddle', 'Tourek Williams', 'Alex Bayer', 'Isaiah Burse', 'Richard Crawford', 'Ben Gardner', 'Michael Huey', 'Keith Lewis', 'Chuka Ndulue', 'Tim Semisch', 'Brad Sorensen', 'Craig Watts']

伟大的非常感谢!