Python 2.7 网站存储其数据的位置
我刚刚开始使用Python Web抓取请求。这可能是一个广泛的问题,我会尽量简短 我遇到过这样的情况:有时可以下载整个页面源代码,其中包含Python 2.7 网站存储其数据的位置,python-2.7,python-requests,Python 2.7,Python Requests,我刚刚开始使用Python Web抓取请求。这可能是一个广泛的问题,我会尽量简短 我遇到过这样的情况:有时可以下载整个页面源代码,其中包含r.content(其中r是请求的get调用的响应对象) 有时数据的某些部分以json格式存储。。。在可以通过深入观察get和post调用来访问的文件中 然而,我甚至发现网站的全部内容都在DOM中,但部分内容既不在页面源代码中,也不在Json文件中 我想知道一个网站可以在多少这样的地方存储数据? (只是名字,我不想知道怎么去那里) 对于最后一种类型的网站,我几
r.content
(其中r是请求的get调用的响应对象)
有时数据的某些部分以json格式存储。。。在可以通过深入观察get和post调用来访问的文件中
然而,我甚至发现网站的全部内容都在DOM中,但部分内容既不在页面源代码中,也不在Json文件中
我想知道一个网站可以在多少这样的地方存储数据?
(只是名字,我不想知道怎么去那里)
对于最后一种类型的网站,我几乎观察了每一个请求,但找不到数据在哪里
除了上面提到的2个地方,还有其他地方吗?或者,这是唯一两个表明我没有做好我的工作的权利,观察电话的请求
你可以用简短的要点来回答,我可以从那里开始学习
提前感谢。假设我们只讨论HTML数据。web服务器可以为您提供多种其他格式的数据(JSON/XML等) 请注意,我所描述的是泛化,和大多数泛化一样,您可能会发现不适合它的例外情况 大致上,我们可以将显示的数据类型(针对最终用户)分为两类
- 预渲染
- 后期渲染
请求
和美化组
的组合都应该有效(假设您可以确定文档的一般结构)
后期渲染
在这里,从服务器返回的HTML页面只是实际数据的“骨架”或占位符。数据由附带的JS代码呈现
在这种情况下,如果您通过(例如)请求获取源文件,您将得到一个空壳,其中没有数据
为此,如果您在渲染时检查浏览器发出的调用(chrome的网络选项卡或firefox的检查工具或更流行的firebug),您很可能会看到ajax请求从服务器返回实际数据)
根据请求的发出方式,您可以点击ajax端点,并以JSON格式获取数据
您可以使用response.json()
函数将其提取到python目录中
在某些(罕见的)情况下,不会有ajax调用,但服务器提供的HTML仍然是一个shell。实际数据是提供的文件的一部分,但作为JS代码本身的一部分存储。这样做可能有多种原因,例如动态数据被发送到静态js文件,或者只是为了阻止简单的抓取页面的尝试
抓取此类页面的一种方法是在无头浏览器中“呈现”页面,该浏览器执行JS代码并返回HTML,可通过解析器(如beautifulsoup
beautifulsoup能够与许多人合作,其中之一是html5lib
,这可以解决这个问题
你也可以看看或者
或者您可以尝试自己解析js代码,这可能会更快
要得出使用什么的结论,需要仔细检查页面在浏览器上的呈现方式。即使没有看到ajax请求,服务器提供的html也不一定是浏览器显示它的方式
一个好的开始方法是查看正在提供的裸html,通过curl
或请求下载页面。获取
,或在浏览器中禁用javascript时简单地呈现页面
祝你好运。谢谢你的详细回复+1为此。。。这确实很有帮助。然而,我想找到的是第三种类型的网页,您最终选择了selenium之类的模块。我的意思是,是的,它们很有帮助,但是如果不使用浏览器并将其保持为纯python,就不能获得结果吗?我们现在知道html、json、xml。还有其他的吗?再一次,我并不是在寻找一个可以刮取的方法,而是在它可能存储数据的地方。。。再次感谢您,您可以寻找需要浏览器驱动程序和带有GUI的机器的机器,尽管有解决方法。您可以开始,但首先尝试将beautiful soup与html5lib结合使用,因为这可能是两个选项中最快的一个。