使用python解析多个结果页

2024-04-26 05:53:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解析一个图书馆网站,以便从特定的出版商那里获取信息。这是网站的链接。在

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

到目前为止,通过使用BeautifulSoup,我可以从这个页面获取我需要的数据。问题是我的脚本只从整个结果集中抓取前25个条目(一个页面的价值),而这个结果集有很多。在

我错过了什么?在

下面是一小段代码。

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(包含某种查询)似乎没有任何页面信息。我不知道如何向服务器发出重复请求。在

谢谢。在


Tags: nameurldoc网站responsehtml页面all
3条回答

也许这并不难:

如果查看获取其他页面的请求,即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。很可能需要使用一个循环来查看所有结果,但这似乎非常可行:

^{pr2}$

霍利斯在测试版中有一个JSON API。它的结果包括到下一页的链接。这可能更容易使用。在

必须让python按顺序调用每个页面。知道你想浏览所有的页面是不够聪明的。在

如果要调用所有页面,则应该将所需的结果解析为某种形式的输出文件,可以是以后可以通过python处理的.pkl文件,也可以是.txt文件(如果您觉得这是您所需要的)。如果使用的数据集太长,可能会遇到内存溢出。在

即使您还没有调用所有页面,将输出数据流式传输到一个.pkl文件中,以便在最后处理成可用的形式也是明智之举。在

相关问题 更多 >

    热门问题