0

我正在尝试从该站点获取信息:

http://www.gocrimson.com/sports/mbkb/2011-12/roster

如果您在浏览器中查看该页面,您会看到一个<table>包含所有球员信息的漂亮页面,下面是教练的信息。

当我将该页面拉入 python 程序(使用urllib2)或 ruby​​ 程序(使用nokogiri)时,表格表示为一堆div元素。我认为可能有一些 javascript 正在运行,所以我在浏览器上禁用了 javascript 并重新访问了该页面。它仍然加载了tables 到位。

如果我使用Selenium拉入页面源,我会得到table格式。

关于为什么页面与 div 一起出现的任何想法?

Python:

page = urllib2.urlopen(url)
html = page.read()

print html输出(我将其中一个divs 放在最后一行以引起注意。那是tr浏览器页面中的 a 。缩短以保持字符限制):

'\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n\r\n\r\n\r\n\r\n\t\t\t\t\r\n\r\n\r\n<?xml version="1.0" encoding="iso-8859-1"?>\r\n<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">\r\n<html xmlns="http://www.w3.org/1999/xhtml">
<head> 
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1"/> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0"/>\r\n<meta forua="true" http-equiv="Cache-Control" content="must-revalidate" />\r\n<meta http-equiv="Pragma" content="no-cache, must-revalidate" />\r\n        
<title>The Official Website of Harvard University Athletics:  Harvard Athletics - GoCrimson.com  : Men\'s Basketball - 2011-12 Roster </title>\r\n<link rel="stylesheet" href="/info/mobile/mobile.css" type="text/css"></link>\r\n<link rel="stylesheet" href="/mobile-overwrite.css" type="text/css"></link>\r\n</head>\r\n
<body class="classic">\r\n\r\n\r\n\t<strong><a href="/landing/index">News</a></strong>\r\n | \r\n\t<a href="/landing/index?c=scores">Scores</a>\r\n<br /><br />\r\n\r\n<p class="goBack-link"><a href="javascript:history.go(-1)"><<< Back</a></p>\r\n\r\n\r\n<div class="roster ">\r\n\t\t\t<div class="title">Men\'s Basketball - 2011-12 Roster</div>\r\n\t\t<div class="table">\r\n\t\t<div class="titles">\r\n\t\t\t
<div class="number">No.</div>\r\n\t\t\t<div class="name">Name</div>\r\n\t\t\t<div class="positions">Position</div>\r\n\t\t</div>\r\n\t\t\r\n\t\t\t\t\t<div class="item  even  clearfix">\r\n\t\t\t\t<div class="data">\r\n\t\t\t\t\t<div class="number">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t3\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class="name">

红宝石:

doc = Nokogiri::HTML(open("http://www.google.com/search?q=doughnuts"))
doc.css('tr').each do |node|
  puts node.text
end

找不到trs,但是

doc.css('div').each do |node|
  puts node.text
end

找到divs

4

1 回答 1

1

通过添加 User-Agent 标头,我能够得到 a<table>而不是s 。div具体来说,我假装自己是一个知名的流行浏览器。

opener = urllib2.build_opener()
opener.addheaders = [('User-agent',
    ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) '
     'AppleWebKit/535.1 (KHTML, like Gecko) '
     'Chrome/13.0.782.13 Safari/535.1'))
]
response = opener.open('http://www.gocrimson.com/sports/mbkb/2011-12/roster')
print response.readlines() # divs are now a table
于 2012-06-19T20:10:21.327 回答