我试图刮分页的网页,但它给我的第一页在每一次迭代。当我在浏览器中单击它时,内容是不同的。
url = "http://www.x.y/z/a-b#/page-%s"
for i in range(1, 10):
url2 = url % str(i)
soup = urlToSoup(url2)
print url2
# url2 changes in every iteration
# Here it will print the same product list in every iteration这是输出:
http://www.x.y/z/a-b#/page-1
http://www.x.y/z/a-b#/page-2
http://www.x.y/z/a-b#/page-3
http://www.x.y/z/a-b#/page-4
http://www.x.y/z/a-b#/page-5
http://www.x.y/z/a-b#/page-6
http://www.x.y/z/a-b#/page-7
http://www.x.y/z/a-b#/page-8
http://www.x.y/z/a-b#/page-9页2的寻呼机项(以及类似的3、4、.)如下所示
<a rel="nofollow" href="http://www.x.y/z/a-b#/page-2"> <span>2</span> </a>为什么当我在浏览器中打开URL (通过单击或地址栏)时,以及当我通过代码获得URL时,结果页面是不同的?
发布于 2017-08-10 21:46:51
将文本添加到“片段标识符”(即在#之后)参见https://www.w3.org/DesignIssues/Fragment.html
片段标识符是URI后面的字符串,散列之后的字符串,它将特定的内容标识为文档的一个函数。对于用户界面Web文档(如HTML ),它通常标识一个部件或视图。例如,在对象中
片段标识符在取消引用之前与URI的其余部分分离,因此片段本身中的标识信息仅由用户代理解除引用,而不管URI方案如何。虽然这种单独的处理往往被认为是信息的丢失,特别是随着资源的推移而准确地重定向引用,但它也有助于防止信息提供者拒绝参考作者有选择地引用资源中的信息的权利。间接引用还为使用URI的系统提供了额外的灵活性和可扩展性,因为新的媒体类型比新的标识方案更容易定义和部署。
因此,您要将索引添加到未发送到服务器的URL的一部分。它仅供客户端使用,“仅由用户代理取消引用”。服务器每次迭代都会看到相同的URL。
页面最有可能呈现的方式是,有一些JavaScript读取片段标识符并发出另一个请求以获取数据或确定要显示的数据的哪一部分。
我建议检查页面使用Live或其他一些工具发出的所有请求,看看是否有第二个请求可以使用或使用JavaScript呈现技术,如Selenium、干燥或PyQT5,有关详细信息,请参阅我对刮谷歌财务(BeautifulSoup)的回答。
https://stackoverflow.com/questions/45622383
复制相似问题