




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
爬虫学习心得原来的代码有几点我们要改的这个就是多IP爬虫,一个IP很容易就被发现并禁止这个就是多客户端爬虫,单一个的客户端很容易被发现并禁掉 importsocket套接字套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。 Python中的random模块用于生成随机数。 importuser_agents这个比较特殊,是人为定义的库,这个库存储了许多IP或是对点评网的访问方式,目的就是随机选一个IP访问以避免网站对单一IP登陆的封杀。 timeout=60 socket.setdefaulttimeout(timeout) #设置HTTP或Socket访问超时,来防止爬虫抓取某个页面时间过长。(这个时间用秒 #来算) defget_status(url): r=requests.get(url,allow_redirects=False) #allow_redirects=False不允许间接地访问,用request库中的get函数来抓取URL returnr.status_code page=urllib2.urlopen(req) content=page.read() page.close() returncontent #正常的话就用content来保存读出的结果并且一定要关闭文件并返回content exceptUnicodeDecodeErrorase: print('-----UnicodeDecodeErrorurl:',url) return'' #解码错误则输出并返回空 excepturllib2.HTTPErrorase: print("-----HTTPErrorurl:",url) return'' #网站禁止爬虫则输出并返回空 exceptsocket.timeoutase: print("-----sockettimout:",url) return'' #抓取超时则输出并返回空 excepturllib2.URLError,e: ifhasattr(e,'reason'): print'Failedtoreachaserver.' print'Reason:',e.reason return'' elifhasattr(e,'code'): #"elif"相当于elseif print'Theservercouldn\'tfulfilltherequest.' print'Errorcode:',e.code return'' exceptException,e: ifDEBUG: printe return'' #ifDEBUG如果出错了 printe return''#获取店铺的url defget_shopurl(url): content=content_get(url) #寻找店铺的实际url,例如/shop/6123204,用正则表达式 #find_shopurl=re.compile(r'<ulclass="detail">\s*<liclass="shopname">\s*<ahref="(.*?)"class="BL"title=.*?</a>',re.DOTALL) find_shopurl=re.compile(r'<ulclass="detail">\s*<liclass="shopname">\s*<ahref="(.*?)"class="BL"[]*title=*',re.DOTALL) result=find_shopurl.findall(content) returnresult关于get_shopurl(url):补充他山之石可以看到url的信息存储在span标签中,要获取其中的信息可以用正则式。

ys****39
实名认证
内容提供者


最近下载