概述
初学python,发现用python写爬虫很方便,顺便把自己的代码贴出来和大家分享交流,欢迎大家多指点
这个爬虫是自己写的第二个版本
使用版本:python 2.7
#coding:utf-8
import urllib2,re,os
from urllib import *
from time import sleep
class spider:
def __init__(self):
self.lst_girl=[]
self.lst_fail=[]
self.lst_use=[]
self.PATH=os.getcwd()
self.host='http://www.zngirls.com'
def saveimg(self,fdir,img_url):
fn=img_url.split('/')[-1] #图片文件名
try:
data=urllib2.urlopen(img_url,timeout=20).read()
f=open(fdir+'\'+fn,'wb')
f.write(data)
f.close()
print 'save image =========== ok'
except:
print 'save image error ==== OK'
f=open(fdir+'\err.txt','w')
f.write(img_url)
f.close()
def mkdir(self,fdir):
ie=os.path.exists(fdir)
if not ie:
os.makedirs(fdir)
#获取所有列表
def getgirllist(self):
url='http://www.zngirls.com/ajax/girl_query_total.ashx'
c='%E9%9F%A9%E5%9B%BD' #日本的urlencode
tmp=unquote(c)
#temp=unquote(p) #url double encode
country=unquote(tmp)
#profe=unquote(temp)
hd={'Host':'www.zngirls.com',
'User-Agent':'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0',
'Referer':'http://www.zngirls.com/find/',
'X-Requested-With':'XMLHttpRequest'
}
i=1
go=True
lst_count=[]
while go:
postdata={'country':country,
'curpage':str(i),
'pagesize':'20'
}
post_data=urlencode(postdata)
req=urllib2.Request(url,post_data,hd)
html=urllib2.urlopen(req).read()
pat=re.compile('/girl/[d]+')
lst_url=re.findall(pat,html)
lst_count+=lst_url
print '初始化完成页数: ' +str(i)
if len(lst_url)>1:
go=True
i+=1
else:
go=False
glst=list(set(lst_count))
fp=open('list.txt','w')
for s in glst:
fp.write(s+'n')
fp.close()
print '初始化完成 ================ OK'
print '获取数据长度: '+ str(len(glst))
return glst
#处理数据
def solvedata(self,html):
pat=re.compile("value='(.*?)'")
found=re.findall(pat,html)
ipat=re.compile('<td colspan="3">(.*?)</textarea></td>',re.S)
tmp=ipat.search(html).group(1)
info=re.sub('<[^>]+>','',tmp)
info=info.replace(' ','')
fdir=os.getcwd()+'\spider\'+found[0]
print fdir
self.mkdir(fdir)
fp=open(fdir+'\list.txt','w')
for opt in found:
fp.write(opt+'n')
fp.write(info)
fp.close()
print 'write file ====== ok'
#===image ================
im=re.compile("class='imglink' href='(.*?)'><img",re.I)
imglink=im.search(html).group(1)
self.saveimg(fdir,imglink)
def main(self):
url='http://www.zngirls.com'
fp=open('list.txt','r')
buf=fp.read()
if len(buf)<250:
self.lst_girl=self.getgirllist()
else:
self.lst_girl=buf.split('n')
print '读取缓冲完成 === ok'
print '数据长度: '+str(len(self.lst_girl))
hd={'Host':'www.zngirls.com',
'User-Agent':'Mozilla/5.0 (Windows NT 5.1; rv:17.0)',
'Referer':'http://www.zngirls.com/'
}
for s in self.lst_girl:
g_url=url + s
if os.path.exists(os.getcwd()+'\spider\'+ s[s.rfind('/')+1:]):
print s +'exist'
else:
try:
req=urllib2.Request(g_url,headers=hd)
html=urllib2.urlopen(req).read()
self.solvedata(html)
#self.lst_use.append(s)
sleep(2)
except urllib2.URLError,e:
self.lst_fail.append(s)
print '1.error:'+ str(e.reason)
sleep(5)
fp=open('err.txt','w')
for err in self.lst_fail:
fp.write(err+'n')
fp.close()
print "spider success"
craw=spider()
craw.main()
转载于:https://my.oschina.net/u/860827/blog/610026
最后
以上就是认真吐司为你收集整理的python爬虫v.20的全部内容,希望文章能够帮你解决python爬虫v.20所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复