当前位置: 首页 > news >正文

做淘宝电商比较厉害的网站太原网站 制作

做淘宝电商比较厉害的网站,太原网站 制作,饭店品牌建设,宁波网站建设lonoo为了爬取的高效性#xff0c;实现的过程中我利用了python的threading模块#xff0c;下面是threads.py模块#xff0c;定义了下载解析页面的线程#xff0c;下载图片的线程以及线程池 import threading import urllib2 import Queue import re thread_lock threading.RL… 为了爬取的高效性实现的过程中我利用了python的threading模块下面是threads.py模块定义了下载解析页面的线程下载图片的线程以及线程池 import threading import urllib2 import Queue import re thread_lock threading.RLock() #下载页面的一个函数header中没有任何内容也可以顺利的下载就省去了 def download_page(html_url): try: req urllib2.Request(html_url) response urllib2.urlopen(req) page response.read() return page except Exception: print ‘download %s failed’ % html_url return None #下载图片的一个方法和上面的函数很像只不过添加了一个文件头 #因为在测试的过程中发现天涯对于没有如下文件头的图片链接是不会返回正确的图片的 def download_image(image_url, referer): try: req urllib2.Request(image_url) req.add_header(‘Host’, ‘img3.laibafile.cn’) req.add_header(‘User-Agent’, ‘Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0’) req.add_header(‘Accept’, ‘image/png,image/*;q0.8,*/*;q0.5’) req.add_header(‘Accept-Language’, ‘zh-cn,zh;q0.8,en-us;q0.5,en;q0.3’) req.add_header(‘Referer’, referer) req.add_header(‘Origin’, ‘http://bbs.tianya.cn’) req.add_header(‘Connection’, ‘keep-alive’) response urllib2.urlopen(req) image response.read() return image except Exception: print ‘download %s failed’ % image_url return None #下载和解析一个页面的线程类 class download_html_page(threading.Thread): #name:线程的名字 #page_range:用户输入的页面范围 #page_contents:解析之后楼主的内容 #img_urls:解析之后楼主贴的图的链接 #html_url:输入的页面url #first_page第一次已经下载好的页面主要是考虑效率不重复下载 def __init__(self, name, page_range, page_contents, img_urls, html_url, first_page): threading.Thread.__init__(self) self.name name self.page_range page_range self.page_contents page_contents self.img_urls img_urls self.html\_url html\_url self.first\_page first\_page #判断是不是楼主的内容 def is\_louzhu(self, s): result re.search(r!-- div classhost-ico(.\*?)/div --, s, re.S) return (result is not None) #获得页面里属于楼主图片的url def get\_img\_url(self, s, page\_url): #判断是不是楼主给其他用户的评论如果是的话直接过滤掉本人从不看评论 is\_louzhu\_answer re.search(r-{15,}br, s, re.S) if is\_louzhu\_answer is None: imgurl re.findall(rimg.\*?original(?Pimgurl.\*?).\*?/br, s, flags re.S) url\_path \[\] for one\_url in imgurl: self.img\_urls.put(one\_url | page\_url) path re.search(\\w\\.jpg, one\_url).group(0) url\_path.append(img/ path) segments re.split(rimg .\*?/br, s.strip()) content segments\[0\].strip() for i in range(len(url\_path)): content \\nimg src url\_path\[i\] /\\nbr content segments\[i1\].strip() return content #解析夜歌页面 def parse\_page(self, html\_page, page\_url): html\_page.decode(utf-8) Items re.findall(rdiv classatl-content(?Pislouzhu.?)div classbbs-content.\*?(?Pcontent.?)/div, html\_page, re.S) page\_content for item in Items: if self.is\_louzhu(item\[0\]): one\_div self.get\_img\_url(item\[1\], page\_url) if one\_div is not None: page\_content one\_div return page\_content def run(self): while self.page\_range.qsize() 0: page\_number self.page\_range.get() page\_url re.sub(-(\\d?)\\.shtml, - str(page\_number) .shtml, self.html\_url) page\_content print thread %s is downloading %s % (self.name, page\_url) if page\_url self.html\_url: page\_content self.parse\_page(self.first\_page, page\_url) else: page download\_page(page\_url) if page is not None: page\_content self.parse\_page(page, page\_url) #thread\_lock.acquire() #self.page\_contents\[page\_number\] page\_content #thread\_lock.release() self.page\_contents.put(page\_content, page\_number) self.img\_urls.put(finished) #下载图片的线程 class fetch_img(threading.Thread): def __init__(self, name, img_urls, download_img): threading.Thread.__init__(self) self.name name self.img_urls img_urls self.download_img download_img def run(self): while True: message self.img\_urls.get().split(|) img\_url message\[0\] if img\_url finished: self.img\_urls.put(finished) break else: thread\_lock.acquire() if img\_url in self.download\_img: thread\_lock.release() continue else: thread\_lock.release() print fetching image %s % img\_url referer message\[1\] image download\_image(img\_url, referer) image\_name re.search(\\w\\.jpg, img\_url).group(0) with open(rimg\\%s % image\_name, wb) as img: img.write(image) thread\_lock.acquire() self.download\_img.add(img\_url) thread\_lock.release() #定义了一个线程池 class thread_pool: def __init__(self, page_range, page_contents, html_url, first_page): self.page_range page_range self.page_contents page_contents self.img_urls Queue.Queue() self.html_url html_url self.first_page first_page self.download_img set() self.page\_thread\_pool \[\] self.image\_thread\_pool \[\] def build\_thread(self, page, image): for i in range(page): t download\_html\_page(page thread%d % i, self.page\_range, self.page\_contents, self.img\_urls, self.html\_url, self.first\_page) self.page\_thread\_pool.append(t) for i in range(image): t fetch\_img(image thread%d % i, self.img\_urls, self.download\_img) self.image\_thread\_pool.append(t) def all\_start(self): for t in self.page\_thread\_pool: t.start() for t in self.image\_thread\_pool: t.start() def all\_join(self): for t in self.page\_thread\_pool: t.join() for t in self.image\_thread\_pool: t.join() 下面是主线程的代码 # -*- coding: utf-8 -*- import re import Queue import threads if __name__ ‘__main__’: html_url raw_input(enter the url: ) html_page threads.download_page(html_url) max\_page 0 title if html\_page is not None: search\_title re.search(rspan classs\_titlespan style\\S?(?Ptitle.?)/span/span, html\_page, re.S) title search\_title.groupdict()\[title\] search\_page re.findall(ra href/post-\\S?-\\d?-(?Ppage\\d?)\\.shtml(?Ppage)/a, html\_page, re.S) for page\_number in search\_page: page\_number int(page\_number) if page\_number max\_page: max\_page page\_number print title%s % title print max page number: %s % max\_page start\_page 0 while start\_page 1 or start\_page max\_page: start\_page input(input the start page number:) end\_page 0 while end\_page start\_page or end\_page max\_page: end\_page input(input the end page number:) page\_range Queue.Queue() for i in range(start\_page, end\_page 1): page\_range.put(i) page\_contents {} thread\_pool threads.thread\_pool(page\_range, page\_contents, html\_url, html\_page) thread\_pool.build\_thread(1, 1) thread\_pool.all\_start() thread\_pool.all\_join() 本文仅作项目练习且勿商用 由于文章篇幅有限文档资料内容较多需要这些文档的朋友可以加小助手微信免费获取【保证100%免费】中国人不骗中国人。 全套Python学习资料分享 一、Python所有方向的学习路线 Python所有方向路线就是把Python常用的技术点做整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。 二、学习软件 工欲善其事必先利其器。学习Python常用的开发软件都在这里了还有环境配置的教程给大家节省了很多时间。 三、全套PDF电子书 书籍的好处就在于权威和体系健全刚开始学习的时候你可以只看视频或者听某个人讲课但等你学完之后你觉得你掌握了这时候建议还是得去看一下书籍看权威技术书籍也是每个程序员必经之路。 四、入门学习视频全套 我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。 五、实战案例 光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。 今天就分享到这里啦感谢大家收看
http://www.hkea.cn/news/14289872/

相关文章:

  • 深圳做网站的公司哪个好深圳商城网站设计制作
  • 微信房地产网站建设怎么建自己的网站?
  • 自助网站建设公司电话青岛知名网站建设公司排名
  • 汕头免费建站网页模板制作工具
  • 网站的主题是什么2880元网站建设
  • 济南企业建站哪家做的好科技公司名称大全简单大气
  • 嘉祥住房和城乡建设局网站网站建设属什么资产
  • 合肥专业网站优化价格wordpress弹出搜索
  • 郑州网站建设正云长春网站建设新格
  • 国外有哪些设计网站网站建设策划报价
  • 网站建设对比网页美工设计是什么
  • 五金配件网站建设报价宣传海报怎么制作
  • 完整网站开发广州我网站制作
  • 合肥房产网官方网站网络运维工程师教程
  • 哪些网站可以做问卷网站后期维护内容
  • 网站建设具体工作wordpress完整虚拟资源下载类源码
  • 变量命名网站易企秀怎么制作
  • 如何自己做门户网站亚马逊的网站建设分析
  • 招商网站建设服务商课程网站建设总体情况
  • 免费制作永久企业网站营销型企业网站建设
  • 温州开发网站公司wordpress邮件美化
  • 网页设计版式布局优化排名推广技术网站
  • joomla网站建设金蝶二次开发
  • wordpress 不用模版龙岩整站优化
  • 销售网站内容设计方案网站建设纟金手指下拉壹陆
  • 网站可以做固定资产吗soso搜搜网站收录提交入口
  • 青岛网站建设公司招聘大淘客联盟做网站
  • 陕西建设网网站集群怎么打电话给网络服务商
  • 怀化市网站建设c 开发微网站开发
  • 商洛做网站的公司中视频自媒体平台注册