0

このサイトから情報を取得しようとしています:

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

そのページをブラウザーで見ると、<table>すべてのプレーヤー情報を含むナイスが表示され、その下にコーチの情報が表示されます。

そのページを python プログラム ( を使用urllib2) または ruby​​ プログラム ( を使用) に取り込むと、テーブルは一連の要素nokogiriとして表されます。divjavascript が実行されている可能性があると思ったので、ブラウザで JavaScript を無効にして、ページに再度アクセスしました。s が配置された状態でもロードされtableます。

Seleniumページ ソースを取得するために使用する場合は、table形式を取得します。

ページにdivが含まれる理由について何か考えはありますか?

パイソン:

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

print html出力 (div注意を引くために最後の行に s の 1 つを配置しました。これは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 ヘッダーを追加することで、s の<table>代わりにa を取得できました。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 に答える