从网站上的 table 获取信息,每个网站的 XPATH 各不相同,Python
Get info from a table on a website where XPATH varies on each site, Python
如果以本站为例:
http://gbgfotboll.se/information/?scr=table&ftid=51168
我正在使用此代码从第二个 table:
获取信息
for url in urlList:
request = net.Request(url)
response = net.urlopen(request)
data = response.read()
dom = lxml.html.parse(BytesIO(data))
#all table rows
xpatheval = etree.XPathDocumentEvaluator(dom)
rows = xpatheval('//div[@id="content-primary"]/table[2]/tbody/tr')
divName = xpatheval('//*[@id="content-primary"]/h1//text()')[0]
trash, divisionName = divName.rsplit("- ")
dict[divisionName] = {}
for id,row in enumerate(rows):
columns = row.findall("td")
teamName = columns[0].find("a").text, # Lag
print teamName
teamName
playedGames = columns[1].text, # S
wins = columns[2].text,
draw = columns[3].text,
lost = columns[4].text,
dif = columns[6].text, # GM-IM
points = columns[7].text, # P - last column
dict[divisionName].update({id :{"teamName":columns[0].find("a").text, "playedGames":playedGames, "wins":wins, "draw":draw, "lost":lost, "dif":dif, "points":points }})
对于该网站,行有table[2]
对于这个网站:
http://gbgfotboll.se/serier/?scr=table&ftid=57108
行需要如下所示:
rowss = '//div[@id="content-primary"]/table[1]/tbody/tr'[0]
那么我要问的是,无论 table 位于什么 table 索引,是否有办法获取我需要的信息?
一种方法是通过其 class
属性 select(所有 3 个 类 都是必需的):
xpatheval('//div[@id="content-primary"]/table[@class="clCommonGrid clTblStandings clTblWithFullToggle"]/tbody/tr'
另一种方法是 select table 中的 child 元素,您知道该元素仅存在于特定类型的 table 中。例如,GM-IM
header 可能非常特定于 table 的类型,因此我导航到它,然后沿着树向上移动,最终得到与您相同的行:
xpatheval('//div[@id="content-primary"]//tr[th="GM-IM"]/../../tbody/tr')
如果以本站为例:
http://gbgfotboll.se/information/?scr=table&ftid=51168
我正在使用此代码从第二个 table:
获取信息for url in urlList:
request = net.Request(url)
response = net.urlopen(request)
data = response.read()
dom = lxml.html.parse(BytesIO(data))
#all table rows
xpatheval = etree.XPathDocumentEvaluator(dom)
rows = xpatheval('//div[@id="content-primary"]/table[2]/tbody/tr')
divName = xpatheval('//*[@id="content-primary"]/h1//text()')[0]
trash, divisionName = divName.rsplit("- ")
dict[divisionName] = {}
for id,row in enumerate(rows):
columns = row.findall("td")
teamName = columns[0].find("a").text, # Lag
print teamName
teamName
playedGames = columns[1].text, # S
wins = columns[2].text,
draw = columns[3].text,
lost = columns[4].text,
dif = columns[6].text, # GM-IM
points = columns[7].text, # P - last column
dict[divisionName].update({id :{"teamName":columns[0].find("a").text, "playedGames":playedGames, "wins":wins, "draw":draw, "lost":lost, "dif":dif, "points":points }})
对于该网站,行有table[2]
对于这个网站:
http://gbgfotboll.se/serier/?scr=table&ftid=57108
行需要如下所示:
rowss = '//div[@id="content-primary"]/table[1]/tbody/tr'[0]
那么我要问的是,无论 table 位于什么 table 索引,是否有办法获取我需要的信息?
一种方法是通过其 class
属性 select(所有 3 个 类 都是必需的):
xpatheval('//div[@id="content-primary"]/table[@class="clCommonGrid clTblStandings clTblWithFullToggle"]/tbody/tr'
另一种方法是 select table 中的 child 元素,您知道该元素仅存在于特定类型的 table 中。例如,GM-IM
header 可能非常特定于 table 的类型,因此我导航到它,然后沿着树向上移动,最终得到与您相同的行:
xpatheval('//div[@id="content-primary"]//tr[th="GM-IM"]/../../tbody/tr')