使用python解析多个结果页

使用python解析多个结果页,python,html,parsing,Python,Html,Parsing,我正试图解析一个图书馆网站,从特定的出版商那里获取信息。这是该网站的链接 到目前为止,通过使用BeautifulSoup,我可以从这个页面获取我需要的数据。问题是,我的脚本只从整个结果集中获取前25个条目(相当于一个页面),而整个结果集中的条目要多得多 我错过了什么 下面是一小段代码。 def url_parse(name): if(name == " "): print 'Invalid Error' else: response = urllib2.urlopen

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

到目前为止,通过使用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"})
def url_解析(名称):

如果(名称==“”): 打印“无效错误” 其他: response=urlib2.urlopen(名称) html_doc=response.read() 汤=美汤(html\U文档) 打印名称 打印soup.find_all(“a”,{“class”:“classiclink”}) #打印soup.find(“a”,{“class”:“ClassClink”}) aleph_li=[]创建并清空列表 aleph_li=soup.find_all(“a”,{“class”:“classicling”})
在此之后,我计划使用这些标签中的可用信息。到目前为止,正如你所说,我只能抓取其中的25个

我无法遍历每个页面,因为url(包含某种查询)似乎没有任何页面信息。我不确定如何向服务器发出重复请求


谢谢。

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

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


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

也许这不会那么难:

如果查看请求获取其他页面(称为
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) 

霍利斯有一个测试版。其结果包括指向下一页的链接。这可能更容易使用。

第一页仅包含25个,您还必须对其他页面进行爬网。除非看到一些代码,否则我们无法告诉您缺少什么。@root,我已经更新了问题。希望它能把我的问题弄清楚。谢谢