Python_kad爬虫学习笔记(二)

本想着一步到位,把bug都解决后再发布,无奈碰到个问题困扰了好几天,就先发布下目前的版本吧,做下阶段备份,代码如下:

#-*- coding: utf-8 -*-

import urllib2

import re

import time

f=urllib2.urlopen('http://www.360kad.com/dymhh/allclass.shtml').read()

n1=f.find('<dt><span><a href="http://www.360kad.com/Category_47/Index.aspx" target="_blank">')

n2=f.find('4057/Index.aspx" target="_blank">')

n3=f[n1:(n2+90)]

n4=re.sub('<!--[\s\S]*?-->','',n3)

n5=re.findall('<dd>[\s\S]*?</dd>',n4)

#将链接和tag名做成列表模式

w1=[]#链接

e1=re.findall('http://www.360kad.com/Category_\d{1,}/Index.aspx',''.join(n5))

for i1 in e1:

w1.append(i1)

w2=[]#tag名

e2=re.findall('blank">\S{1,}?</a>',''.join(n5))

e3=(''.join(e2)).replace('blank">','').replace('</a>','\n')

for i2 in e3.split('\n'):

w2.append(i2)

w=[]#链接+tag名

for i in range(len(w2)-1):

w.append(w1[i])

w.append(w2[i])

n6=re.findall('_\d{1,}',''.join(n5))

kad_tag=[]

for n in n6:

kad_tag.append(n)

#每个

class Page_list:

def __init__(self):

self.url1='http://www.360kad.com/Category'

def request_open(self,n1,n2):

self.url2='/Index_'+str(n2+1)+'.aspx'

self.page1=urllib2.urlopen(self.url1+kad_tag[n1]+self.url2).read()

#print n2+1

return self.page1

#页码数

class Next_page:

def __init__(self):

self.url1='http://www.360kad.com/Category'

def np(self,n1):

self.page1=urllib2.urlopen(self.url1+kad_tag[n1]+'/Index.aspx').read()

self.url2=re.findall('_\d{1,}.aspx">尾页</a>',self.page1)

#print self.url2

if self.url2:

self.num2=self.url2[-1][1:-17]

#print self.num2

return int(self.num2)

else:

return 1

page_list=Page_list()

page_text=[]

#具体每个页面的产品名、规格、价格、链接

class Page_info:

def __info__(self):

pass

def m(self,n1,n2):#产品名

self.page_name2=[]

self.page_name1=re.findall('title=".*?" rel="nofollow" class',page_list.request_open(n1,n2))

for x in range(len(self.page_name1)):

self.page_name2.append(self.page_name1[x][7:-22])

self.page_num2=[]#规格

self.page_num1=re.findall('"num">.*?<',page_list.request_open(n1,n2))

for i in range(len(self.page_num1)):

self.page_num2.append(self.page_num1[i][6:-2])

self.page_price2=[]#价格

self.page_price1=re.findall('"price">\S{1,}</span>|priceR">\S{1,}?<|<p class="vip_pric"[\s\S]{1,}</p>',page_list.request_open(n1,n2))

for s in self.page_price1:

self.p2=re.findall('style',s)

if self.p2:

self.page_price2.append('没有价格')

else:

self.p3=re.findall('\d{1,}\.\d{1,}',s)

self.page_price2.append(self.p3[-1])

self.page_url2=[]#链接

self.page_url1=re.findall('<a class="name".*?title=',page_list.request_open(n1,n2))

self.u2=re.findall('/product/\d{1,}.shtml',''.join(self.page_url1))

for f in self.u2:

self.page_url2.append('http://www.360kad.com'+f)

for i in range(len(self.page_name2)):

self.dic=[]

self.dic.append(self.page_name2[i])

self.dic.append(self.page_num2[i])

self.dic.append(self.page_price2[i])

self.dic.append(self.page_url2[i])

page_text.append(self.dic)#这里有疑问

page_info=Page_info()

next_page=Next_page()

for x in range(len(w2)-375):#为减少工作量,就简单提取3个标签验证程序

print'正在抓取tag%s中的内容'%(w2[x])

starttime2=time.time()

for i in range(next_page.np(x)):

print'开始抓取第%d页,抓取进度:'%(i+1)

starttim2=time.time()

page_info.m(x,i)#page_text.append(self.dic)会叠加

endtime2=time.time()

print'抓取第%d页完毕,用时%.2fs'%(i+1,endtime2-starttime2)

time.sleep(4)

'''w4=str(w2[x]).decode('utf-8')

t=file('%s.txt'%w4,'w')

#print type(page_text)

page_text0=''.join('%s' %id for id in page_text)

#page_text1=page_text0.decode('utf-8')

t.write(page_text0)

t.close()'''#tag保存的内容会叠加,没有搞清楚怎么解决

endtime2=time.time()

print '抓取%s标签完毕,用时%.2fs'%(w2[x],endtime2-starttime2)

f=file('KAD_ALL.html','w')

f.write('<!DOCTYPE html>\n<html>\n<head>\n')

f.write('<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n')

f.write('</head>\n\n<body>\n')

s=1

for i in page_text:

f.write('<p>'+str(s)+'. '+'<a href=\"'+i[3]+'\">'+i[0]+'</a>'+',规格:'+i[1]+'价格:'+i[2]+'\n')

s=s+1

f.write('</body>')

f.close()

print'抓取完成,请查看'

运行结果如下:

因为工程量略大,所以想分tag保存,避免后期出问题,之前的工作还得重新来。结果出现append内容叠加的情况,就是说第二个tag保存的内容内也包含了之前的第一个tag的内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容