美文网首页
python简单爬虫实现

python简单爬虫实现

作者: 大道至简_Andy | 来源:发表于2017-11-15 00:02 被阅读19次

功能点

  1. 维护待爬取的url列表
  2. url去重
  3. 提取想要的url
#!/user/bin/env python
# coding=utf-8

import urllib2
import re
import urlparse


def download(url, num_reties=2):
    print 'downloading:', url

    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}
    try:
        request = urllib2.Request(url, headers=headers)
        html = urllib2.urlopen(request).read()
    except urllib2.URLError as e:
        print 'download error:', e.reason
        html = None
        if num_reties > 0:
            if hasattr(e, 'code') and 500 <= e.code < 600:
                return download(url, num_reties - 1)
    return html


def link_crawler(seed_url, link_regex):
    # 待爬取的列表
    crawl_queue = [seed_url]
    # url去重
    seen_url = 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):
                base_url = 'http://bbs.mumayi.com'
                link = urlparse.urljoin(base_url, link)
                if link not in seen_url:
                    print 'link=', link
                    crawl_queue.append(link)


def get_links(html):
    webpage_regex = re.compile('<a[^>]+href=["\'](.*?)["\']', re.IGNORECASE)
    return webpage_regex.findall(html)


# 'thread-6339929-1-1.html'
if __name__ == '__main__':
    link_crawler("http://bbs.mumayi.com/forum-8-1.html", 'thread-[0-9]{1,}-1-1.html')

相关文章

  • 各语言简单爬虫

    各语言简单爬虫 Python 简单爬虫 golang简单爬虫

  • 山东大学-VirtualJudge-总结1

    在这个周根据小组进度安排,我主要学习了Python爬虫的编写,学习主要参考:python实现简单爬虫功能 根据博客...

  • selenium和pantomjs学习

    Selenium + PhantomJS + python 简单实现爬虫的功能 Selenium 一、简介 sel...

  • 2019-01-01

    python爬虫---requests库的用法 requests是python实现的简单易用的HTTP库,使用起来...

  • python爬虫记录

    爬虫是比较常用的程序,用python实现起来非常简单,有几个相关的库,这里就记录一下python常用的爬虫代码,备...

  • python简单爬虫实现

    功能点 维护待爬取的url列表 url去重 提取想要的url

  • Python 实现简单爬虫

    玩Python不做点爬虫都不好意思说自己会Python了 不过多解释、适合有一点编程基础的来看,Python其实很...

  • Python爬虫简单实现

    所需要使用模块 requests官网API:https://requests.readthedocs.io/zh_...

  • 爬虫相关的一些命令

    requestsrequests是python实现的最简单易用的HTTP库,建议爬虫使用requests 获取某个...

  • Python网络爬虫

    Python开发简单爬虫(Python2.X版本,Eclipse工具) 一、爬虫介绍 爬虫调度端:启动、停止爬虫,...

网友评论

      本文标题:python简单爬虫实现

      本文链接:https://www.haomeiwen.com/subject/plbqvxtx.html