0

図書館のウェブサイトを解析して、特定の出版社から情報を入手しようとしています。こちらがウェブサイトへのリンクです。

http://hollis.harvard.edu/?q=publisher:%22sonzogno%22+ex-Everything-7.0:%221700-1943%22+

これまでのところ、美しいスープを使用することで、このページから必要なデータを取得できます。私のスクリプトで問題となるのは、結果セット全体から最初の25エントリ(1ページ分の価値)だけを取得することです。

ここで何が欠けていますか?

これがコードの小さなスニペットです。

def url_parse(name):

if(name == " "): print 'Invalid Error' else: response = urllib2.urlopen(name) html_doc = response.read() soup = BeautifulSoup(html_doc) print soup.title print soup.find_all("a",{"class":"classiclink"}) #print soup.find("a",{"class":"classiclink"}) aleph_li = [] # creates and emptylist aleph_li = soup.find_all("a",{"class":"classiclink"})

この後、これらのタグで利用可能な情報を使用する予定です。あなたが言ったように、私はそれらのうちの25個しか取得できません。

URL(ある種のクエリを含む)にはページ情報が含まれていないようであるため、各ページを繰り返すことができません。サーバーに定期的なリクエストを行う方法がわかりません。

ありがとう。

4

3 に答える 3

1

多分これはそれほど難しいことではないでしょう:

と呼ばれる他のページを取得するリクエストをresult.ashx見ると、次のパラメータがわかります。

inlibrary:false
noext:false
debug:
lastquery:publisher:"sonzogno" ex-Everything-7.0:"1700-1943"
lsi:user
uilang:en
searchmode:assoc
hardsort:def
skin:harvard
rctx:AAMAAAABAAAAAwAAABJ/AAAHaGFydmFyZDJwdWJsaXNoZXI6InNvbnpvZ25vIiBleC1FdmVyeXRoaW5nLTcuMDoiMTcwMC0xOTQzIjJwdWJsaXNoZXI6InNvbnpvZ25vIiBleC1FdmVyeXRoaW5nLTcuMDoiMTcwMC0xOTQzIhJzb256b2dubyAxNzAwLTE5NDMAAAAAA25hdgR1c2VyAAAAA2RlZgpyZXN1bHRsaXN0BWFzc29jBQAAAAAAAAACZW4AAP////9AEAAAAAAAAAIAAAAGY19vdmVyATEEaV9mawAAAAAA
c_over:1
curpage:3
concept:sonzogno 1700-1943
branch:
ref:
i_fk:
mxdk:-1
q:publisher:"sonzogno" ex-Everything-7.0:"1700-1943"
si:user
cs:resultlist
cmd:nav

したがってcurpage、独自のリクエストにパラメータを追加してみてください。すべての結果を調べるためにループを使用する必要がある可能性がありますが、これは非常に実行可能です。

params = urllib.urlencode({"curpage": NUMBER})
urllib2.urlopen(YOUR_PAGE, params) 
于 2012-10-23T23:21:02.593 に答える
0

Pythonに各ページを順番に呼び出させる必要があります。すべてのページを読みたいと思うほど賢くはありません。

すべてのページを呼び出す場合は、必要な結果を何らかの形式の出力ファイルに解析する必要があります。これは、後でpythonで処理できる.pklファイルか、必要なのがそれだけだと思われる場合は.txtファイルです。作業しているデータセットが非常に長い場合、メモリオーバーフローが発生する可能性があります。

まだすべてのページを呼び出していない場合でも、出力データを.pklファイルにストリーミングして、最後に使用可能な形式に処理するのが賢明です。

于 2012-10-23T20:57:17.547 に答える
0

HOLLISにはベータ版のJSONAPIがあります。その結果には、次のページへのリンクが含まれます。これははるかに使いやすいかもしれません。

于 2012-10-23T23:31:06.520 に答える