我正在尝试使用Python的urllib2来提取我在Pandora中“喜欢”的曲目的信息。当比较以下代码产生的HTML和通过Chrome的inspect元素看到的HTML时,我得到了不一致的地方:
import urllib2
headers={ 'User-Agent' : 'Mozilla/5.0' }
url='http://www.pandora.com/profile/likes/myusername'
request=urllib2.Request(url,None,headers)
response = urllib2.urlopen(request)
html = response.read()我想这可能是因为缺少身份验证,尽管我仍然可以加载使用Chrome的匿名模式注销的相同页面。
因此,我添加了以下几行代码,以尝试对我的请求使用基本身份验证:
SERVER='pandora.com'
authinfo = urllib2.HTTPPasswordMgrWithDefaultRealm()
authinfo.add_password(None, SERVER, "login", "password")
handler=urllib2.HTTPBasicAuthHandler(authinfo)
myopener=urllib2.build_opener(handler)
opened=urllib2.install_opener(myopener)
headers={ 'User-Agent' : 'Mozilla/5.0' }
url='http://www.pandora.com/profile/likes/chris.r.armstrong'
request=urllib2.Request(url,None,headers)
response = urllib2.urlopen(request)
html = response.read()仍然得不到正确的HTML响应。有什么建议吗?
发布于 2013-07-30 10:42:10
您在浏览器中看到的DOM (HTML页面)并不是HTTP请求的有效负载。一旦浏览器发出HTTP请求,就会发生许多转换,具体取决于页面的复杂程度。在基本级别,解析器可以按照HTML5解析算法的要求对内容进行重新排序和/或重新组织。然后,JS脚本和XMLHttpRequests将修改DOM并向其添加内容。
如果您确实需要在浏览器中看到的DOM,那么您可能希望使用webdriver来获取浏览器所看到的内容,而不仅仅是HTTP客户端所看到的内容。
希望能有所帮助。
https://stackoverflow.com/questions/17901407
复制相似问题