2012-07-08 16 views
0

我试图解析使用urllib2的网页,BeautifulSoup和Python 2.7。的urlopen总是检索相同的网页

问题在于上游:每一次我尝试检索一个新的网页,我得到我已经获取的一个。但是,我的网页浏览器中的页面有所不同:请参阅page 1page 2。循环页码有什么问题吗?

下面是一个代码示例:

def main(page_number_max): 
    import urllib2 as ul 
    from BeautifulSoup import BeautifulSoup as bs 

    base_url = 'http://www.senscritique.com/clement/collection/#page=' 

    for page_number in range(1, 1+page_number_max): 
     url = base_url + str(page_number) + '/' 
     html = ul.urlopen(url) 
     bt = bs(html) 

     for item in bt.findAll('div', 'c_listing-products-content xl'): 
      item_name = item.findAll('h2', 'c_heading c_heading-5 c_bold') 
      print str(item_name[0].contents[1]).split('\t')[11] 

     print('End of page ' + str(page_number) + '\n') 

if __name__ == '__main__': 
    page_number_max = 2 
    main(page_number_max) 
+1

你设置页面与哈希参数'page',但它只会使用JavaScript工作,并在你的情况,我认为你正在使用像图书馆卷曲加载页面。 看看网站使用什么URL加载页面1或2在AJAX等 – AdrienBrault 2012-07-08 12:33:54

+0

请在文件的顶部进口。 – 2012-07-08 12:47:15

回答

2

当“#”字符被忽略后发送HTTP请求到服务器,应有尽有。 “#”后的部分仅适用于浏览器。

如果开放的开发工具的Chrome浏览器(或打开Firefox中的Firebug),你会看到你改变页面上senscritique.com有向服务器发送请求每次。这就是您要查找的数据来自哪里。

我不会进入什么exacly,以便从该页面检索数据发送细节,因为我认为这不是他们的TOS一致。

+0

我记得过去我可以使用类似的代码。与此同时,我丢失了代码,我相信网站已更新。这引出了一个问题:当时它为什么起作用? – Wok 2012-07-08 13:30:35

+0

关于TOS,我只是想保存我的评级,以防万一网站出现故障。 – Wok 2012-07-08 13:33:23

+0

谢谢。感谢您指点(锐利)的角色。 – Wok 2012-07-08 13:39:17

1

“#”是用来识别并跳转到浏览器document.The的特定部分的定位标记做它,所以当你发送其余的被忽略整个网页加载请求。