无法从GET请求获取HTML

时间:2015-08-17 21:28:30

标签: javascript python html web-scraping

我正在尝试获取可能动态生成的HTML代码。我唯一想要的是获取下一页的HTML代码。如果你点击按钮,当然一切都很完美。但是,如果您检查此页面的href并将其复制粘贴到您的浏览器地址表单并提交,您将收到如下所示的文本:

{"paging":{"isLastPage":false},"pagination":{"firstUrl":"/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255/showmore?q=*&filter_Buyable=1&filter_Category4=Sp%C3%BA%C5%A1%C5%A5acie+obvody&filter_Category3=Anal%C3%B3gov%C3%A9+obvody&useTechnicalView=true&pageSize=10&page=1","prevUrl":"/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255/showmore? 

当您尝试使用它的标头执行请求时,会发生同样的事情。

问题是,当我点击下一页按钮时,我想获得您获得的网页的HTML代码:http://www.distrelec.sk/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255

你知道如何获取HTML代码吗?

编辑:我试图找到一个GET,它调用下一页并使用请求模块来模拟点击(包含所有请求标题),但我得到了相同的结果。没有HTML。

3 个答案:

答案 0 :(得分:1)

获取JSON可能有助于动态生成下一页。如果您只想查看下一页的html,只需右键单击并选择“检查元素”,然后在页面加载后在Google Chrome中选择。

但是如果您想要下一页的URL,则在JSON中引用URL。

答案 1 :(得分:1)

我无法生成JSON结果,但这对我使用BeautifulSoup起作用了。

import urllib2 
from bs4 import BeautifulSoup

url = #that url
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)

# this gives you the specific next link
next_link_tags = soup.find_all('a','btn btn-right js-page-link')
next_link_url = "http://www.distrelec.sk" + next_link_tags[0]['href']

html2 = BeautifulSoup(urllib2.urlopen(next_link_url))
print html2

答案 2 :(得分:0)

您必须了解第2页的HTML是如何形成的。 enter image description here 秘诀不仅仅是获取内容2'的JSON 。而且正确插入(用它替换内容1')到主HTML中。当然,某些JavaScript负责解码JSON并更新/替换内容。 你需要:

  • 找出哪些功能可以替代'内容1'进入'内容2' (通过检查HTML和js脚本)以及它们的特殊性。
  • 拥有原始HTML
  • 获取JSON(正如您已完成)
  • 使用任何python /其他语言模拟将原始HTML替换为字符串。使用正则表达式。或者,如果您可以将HTML设为DOM结构,请使用XPath。

你确实有很多工作。成为JS的专家。 : - )