学习python写网络爬虫(三)
来源:互联网 发布:刷屏软件下载 编辑:程序博客网 时间:2024/04/27 06:36
链接爬虫,通过跟踪页面内的链接,通过正则表达式来确定需要下载的页面的url,通过set来去除重复的链接
# coding=utf-8import urllib2import reimport urlparsedef download(url, user_agent='wswp', num_retries=2): print 'Downloading:', url headers = {'User-agent': user_agent} request = urllib2.Request(url, headers=headers) try: html = urllib2.urlopen(request).read() except urllib2.URLError as e: print 'Download error:', e.reason html = None if num_retries > 0: if hasattr(e, 'code') and 500 <= e.code < 600: return download(url, num_retries - 1) return htmldef link_crawler(seed_url, link_regex): """Crawl from the given seed URL follwoing links matched by link_regex""" crawl_queue = [seed_url] #防止抓取重复的url seen = set(crawl_queue) while crawl_queue: url = crawl_queue.pop() html = download(url) for link in get_links(html): if re.match(link_regex, link): link = urlparse.urljoin(seed_url, link) if link not in seen: seen.add(link) crawl_queue.append(link) #测试一下,打印出抓取到的url print linkdef get_links(html): """Return a list of links from html""" webpage_regex = re.compile('<a[^>]+href=["\'](.*?)["\']',re.IGNORECASE) return webpage_regex.findall(html)##############不要忘记com后边的斜杠,我之前忘了斜杠,导致一直出错link_crawler('http://example.webscraping.com/','/(index|view)')
0 0
- 学习python写网络爬虫(三)
- 学习python写网络爬虫(一)
- 学习python写网络爬虫(二)
- 用Python写网络爬虫系列(三)表单处理
- 学习python写网络爬虫(四)
- 用python 写网络爬虫 学习笔记
- python网络爬虫(三)
- python网络爬虫(三)
- 网络爬虫学习(三)
- 写网络爬虫学python(一)
- 写网络爬虫学python(二)
- Python网络爬虫(三)-----User-Agent
- Python网络爬虫(三):图片下载器
- 第一次写python--网络爬虫
- 用python写网络爬虫
- 用Python写网络爬虫
- 用Python写网络爬虫-学习总结
- python网络爬虫学习
- MapReuce笔记一之概念简介
- 关于Json数据的解析工具及原理
- 英文版windows10记事本等中文显示乱码
- 电路设计_13.56MHz RFID读写器天线的设计和仿真
- hdu1005 Number Sequence
- 学习python写网络爬虫(三)
- Android冷启动白屏解析,带你一步步分析和解决问题
- Java中对象的this引用
- OS X编译使用osg的方法
- 一道面试题的解答_骑士获得金币问题
- VIM编辑器学习一 分屏
- 面向对象的六大原则
- Android之Notification的多种用法
- 剑指Offer面试题31:连续数组的最大和 Java实现