有个网站
里面有很多妹子,所以就动了心思,是不是可以爬到我的本地来。
参考了 崔庆才的教程,改吧改吧之后,有了成功运行的程序。
中间遇到的坑如下
图片保存到本地
本来可以按照一般方法搞定的
u = urllib.urlopen(imageURL)
data = u.read()
f = open(fileName, 'wb')
f.write(data)
print u"正在悄悄保存她的一张图片为",fileName
f.close()
但是死活就是保存到本地变为24K的无效文件,经过用其他网站的网址单条命令调试和对比,发现是妹子图网站识别了你是机器人,所以,直接给你保存不了有效文件。
后加上HTTP的Header,搞定。
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
headers = { 'User-Agent' : user_agent,'Cookie':'__jsluid=4e20473ab5ba881b9e653d82476753a2'}
request = urllib2.Request(imageURL,None,headers)
data = response.read()
f = open(fileName, 'wb')
f.write(data)
print u"正在悄悄保存她的一张图片为",fileName
f.close()
其中一张图片如果在服务器没有资源,那么程序不再往下爬取。
在以上加了HTTP的Header的代码中增加代码后,完整如下:
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
headers = { 'User-Agent' : user_agent,'Cookie':'__jsluid=4e20473ab5ba881b9e653d82476753a2'}
request = urllib2.Request(imageURL,None,headers)
try:
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
print(e.code)
return
except urllib2.URLError, e:
print(e.args)
return
data = response.read()
f = open(fileName, 'wb')
f.write(data)
print u"正在悄悄保存她的一张图片为",fileName
f.close()
先记录着。