Firebug切换到Network栏,查看HTTP协议头,用python模拟把这些协议头一起发出去。
特别注意Referer协议头。
另:如果有时间建议浏览下HTTP协议
1 import httplib 2 url = "http://www.javbus.in/ajax/uncledatoolsbyajax.php?gid=25093650834&lang=zh&img=http://pics.dmm.co.jp/digital/video/jux00379/jux00379pl.jpg&uc=0&floor=186" 3 conn = httplib.HTTPConnection('104.27.156.223') 4 conn.request('GET',url) 5 response = conn.getresponse() 6 res = response.read() 7 for i in res: 8 print i
代码优化了下,发现得出来的
<
s
c
r
i
p
t
t
y
p
e
=
"
t
e
x
t
/
j
a
v
a
s
c
r
i
p
t
"
>
$
(
'
#
m
o
v
i
e
-
l
o
a
d
i
n
g
'
)
.
h
i
d
e
(
)
;
<
/
s
c
r
i
p
t
>
就是图2的查看源代码的内容,并没有图1中的内容,怎么样才能得到图1中的内容阿
@在下良辰是也: 你的代码没有添加该有的协议啊。
@在下良辰是也: 我这里请求这个地址看不到任何内容,抓包也看不到任何数据。而你第1幅图get那个请求确实响应了数据,可能原因我大概想到了3个:①与http请求头referer有关。就是可能这个网站做了防盗链处理,服务器那边会判断你是从哪个页面转跳过来的;②与cookies有关。可能你需要在访问这个页面之前访问其他的某个页面,这样服务器会给你写cookies,你要带着这个cookies才能成功访问这个页面(以前抓豆瓣电影的时候抓了几百部就被禁了,就是没有带cookies);③与session有关。就是需要登录。
@iVechan: 话说你这都啥网站,抓这种网站做什么。。。
@学数学的程序猿: 大哥,你AT错人了~~~~~~哭
@学数学的程序猿: 你的答案比我清晰,我感觉应该就是referer的问题。如果是cookie问题,肯定会返回一些Error
@学数学的程序猿: 就是无聊,多学点东西
那个"与http请求头referer有关"那这样的话应该怎么做呢
@在下良辰是也: python没学过就不知道了,查文档或百度吧。估计是conn.head("referer", "xxx")类似的吧。。。
@iVechan: 不好意思AT错了。。。你说的有道理,一般都是返回些Error。但也不能排除这种可能,这还要看服务端代码是怎么写的。
@iVechan: 果然是referer问题,无意中解决的:
图2 我打开是空的,然后我用火狐浏览器再GET了一次数据,发现竟然得到我想要的源代码了(直接打开得不到我要的源代码)
查看头文件发现referer变成了图2的地址,然后我用python GET了一次,然后就成功了
在火狐上面,按F12,会弹出一个窗口,窗口左上角有一个箭头,点击一下,然后把鼠标移到你想查看的页面内容上面去点一下就是了,你可以看到弹出的窗口内容有所改变,鼠标移动到改变了的源码,鼠标右键点击,你可以选择复制内部html和复制外部html
我想要的是让python来抓取,可能我没有说明白。
另外谢谢你的回答
@在下良辰是也: 好吧 我错了
不过你看看这个:http://www.iplaypython.com/code/c152.html
不知道是不是你要的那种
@夕边日落: 看过了,不行
谢谢