`
crazier9527
  • 浏览: 1013775 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python 自带小爬虫

阅读更多
#! /usr/bin/env python
“”"A variant on webchecker that creates a mirror copy of a remote site.”"”
__version__ = “$Revision: 28654 $”
import os
import sys
import urllib
import getopt
import webchecker
# Extract real version number if necessary
if __version__[0] == ‘$’:
    _v = __version__.split()
    if len(_v) == 3:
        __version__ = _v[1]
def main():
    verbose = webchecker.VERBOSE
    try:
        opts, args = getopt.getopt(sys.argv[1:], “qv”)
    except getopt.error, msg:
        print msg
        print “usage:”, sys.argv[0], “[-qv] … [rooturl] …”
        return 2
    for o, a in opts:
        if o == “-q”:
            verbose = 0
        if o == “-v”:
            verbose = verbose + 1
    c = Sucker()
    c.setflags(verbose=verbose)
    c.urlopener.addheaders = [
            ('User-agent', 'websucker/%s' % __version__),
        ]
    for arg in args:
        print “Adding root”, arg
        c.addroot(arg)
    print “Run…”
    c.run()
class Sucker(webchecker.Checker):
    checkext = 0
    nonames = 1
    # SAM 11/13/99: in general, URLs are now URL pairs.
    # Since we’ve suppressed name anchor checking,
    # we can ignore the second dimension.
    def readhtml(self, url_pair):
        url = url_pair[0]
        text = None
        path = self.savefilename(url)
        try:
            f = open(path, “rb”)
        except IOError:
            f = self.openpage(url_pair)
            if f:
                info = f.info()
                nurl = f.geturl()
                if nurl != url:
                    url = nurl
                    path = self.savefilename(url)
                text = f.read()
                f.close()
                self.savefile(text, path)
                if not self.checkforhtml(info, url):
                    text = None
        else:
            if self.checkforhtml({}, url):
                text = f.read()
            f.close()
        return text, url
    def savefile(self, text, path):
        dir, base = os.path.split(path)
        makedirs(dir)
        try:
            f = open(path, “wb”)
            f.write(text)
            f.close()
            self.message(”saved %s”, path)
        except IOError, msg:
            self.message(”didn’t save %s: %s”, path, str(msg))
    def savefilename(self, url):
        type, rest = urllib.splittype(url)
        host, path = urllib.splithost(rest)
        path = path.lstrip(”/”)
        user, host = urllib.splituser(host)
        host, port = urllib.splitnport(host)
        host = host.lower()
        if not path or path[-1] == “/”:
            path = path + “index.html”
        if os.sep != “/”:
            path = os.sep.join(path.split(”/”))
            if os.name == “mac”:
                path = os.sep + path
        path = os.path.join(host, path)
        return path
def makedirs(dir):
    if not dir:
        return
    if os.path.exists(dir):
        if not os.path.isdir(dir):
            try:
                os.rename(dir, dir + “.bak”)
                os.mkdir(dir)
                os.rename(dir + “.bak”, os.path.join(dir, “index.html”))
            except os.error:
                pass
        return
    head, tail = os.path.split(dir)
    if not tail:
        print “Huh?  Don’t know how to make dir”, dir
        return
    makedirs(head)
    os.mkdir(dir, 0777)
if __name__ == ‘__main__’:
    sys.exit(main() or 0)
分享到:
评论

相关推荐

    基于Python的网络爬虫技术研究

    通过Python自带的框架可以方便地获取网页内容,配合正则表达式等工具可以有效地提取和分析所需信息。由于互联网中网站众多,每个网站的开发原则和代码风格各异,所以在进行网络爬虫开发时,应考虑目标网站的具体情况...

    Python入门网络爬虫之精华版

    首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。另外,requests也是非常有用的包,与此类似的,还有httplib2等等。 Requests: import requests response = requests.get(url) ...

    python实现并行爬虫

    对于大型项目,考虑使用Scrapy框架,它自带了调度器、下载中间件、爬虫中间件等功能,更便于管理和扩展。 最后,要注意的是,合法和道德的网络爬虫应遵守网站的robots.txt协议,尊重网站的版权,不进行非法的数据...

    基于Python的网络爬虫技术.pdf

    Python自带了如urllib、urlilib2等基础的爬虫库,可以轻松完成网页内容的抓取工作。 3. 强大的字节流处理能力。Python对各种模式的字节流处理有着很好的支持,使得数据提取更为高效。 在实现网络爬虫时,需要对爬虫...

    基于Python的网络爬虫在物流信息追踪中的应用.pdf

    Python不仅自带强大的标准库,还拥有大量的第三方模块,覆盖网络通信、图形识别、数据处理等领域,而且多数模块成熟且稳定。在物流信息追踪的网络爬虫开发中,Python的标准库和第三方模块是完成网络请求、图像处理、...

    pythonscrapy爬虫实例Python爬虫Scrapy实例

    ### Python爬虫Scrapy实例详解 #### 创建Scrapy项目 Scrapy是一款强大的开源网页抓取框架,被广泛应用于数据采集领域。本文档旨在通过一个具体的示例,详细讲解如何使用Scrapy创建并运行一个基本的爬虫项目。 ###...

    基于Python的旅游网站数据爬虫研究

    借助 Python 和 Scrapy 语言框架基础,以“旅游网站”为爬取目标,通过分析当前现有Web crawler 的运行机理、功能单元以及算法程序,试探性的创建一个针对性比较强的网络爬虫,对课题的目标数据进行爬取。...

    基于Python的网络爬虫程序设计.docx

    可以使用 Python 自带的库(如 `urllib`、`requests` 等)或第三方库(如 `BeautifulSoup`、`Scrapy` 等)。 4. **调试与测试**:完成爬虫代码编写后,进行调试与测试,确保代码能够正常运行并获取需要的数据。 5. *...

    基于python的网络爬虫设计.doc

    其中,`urllib.request`是Python自带的标准库,无需额外安装即可使用。 - **URL的理解**:URL(Uniform Resource Locator)即统一资源定位符,用于标识互联网上的资源位置。其格式通常包括协议类型、服务器地址以及...

    python爬虫万能代码-获取网页

    网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,...

    基于Python的招聘网站爬虫及可视化的实现论文.doc

    然而,海量的招聘信息往往使求职者难以快速定位到合适的工作,因此,开发一个基于Python的招聘网站爬虫及可视化系统,能够有效解决这一问题。 二、Python爬虫技术 Python因其简洁的语法和丰富的第三方库,成为数据...

    Python-新浪微博爬虫ScrapyRedis

    8. **Logs and Debugging**:Scrapy自带日志系统,可以帮助开发者跟踪和调试爬虫运行过程中的问题。 **注意事项** 1. **遵守Robots协议**:爬虫在抓取数据时应尊重网站的Robots.txt文件,避免抓取禁止访问的页面。...

    安装python的Scrapy爬虫框架所需的所有安装包

    Scrapy是一个强大的Python爬虫框架,它为网络爬虫开发提供了高效的工具集,包括数据提取、数据处理、调度、中间件、爬虫项目管理等多个功能。在Windows 32位系统上安装Scrapy可能遇到一些挑战,主要是由于依赖库的...

    2022年Python爬虫最全资料【6年爬虫经验精华总结】

    1. **Python环境**:Python是爬虫开发的首选语言,通常使用Anaconda来安装Python环境,因为它自带了许多数据科学所需的库。确保安装Python3.x版本,例如3.6。 2. **Selenium**:Selenium是一个用于浏览器自动化测试...

    python爬虫学习笔记.pdf

    Python自带一个正则表达式模块库re,通过这个模块可以查找、提取、替换一段有规律的信息。 基本符号: 1. 点号‘.’:一个点号可以代替除了换行符以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点...

    基于Python爬虫原理的篮球鞋选择程序的设计与实现.pdf

    相比于 Python 自带的 urllib 模块,Requests 更加简洁易用。通过 Requests 库,我们可以轻松发起 GET、POST 等类型的 HTTP 请求,获取响应数据,并对其进行处理。 使用 Requests 发起请求的基本流程如下: 1. **...

    python爬虫介绍.docx

    `BeautifulSoup`是一个非常流行的解析库,它支持多种解析器,包括Python自带的`html.parser`和第三方的`lxml`,后者不仅速度快,还能处理XML和HTML,提供更强大的解析能力。 5. **应用程序(Application)**:从...

    Python网络爬虫,GUI,数据可视化,存储,分析.rar

    3. **数据可视化**:Python的数据可视化库如Matplotlib、Seaborn、Plotly和Pandas自带的绘图功能,可以帮助我们以图表的形式展示数据,更直观地理解数据分布、趋势和关系。Matplotlib是最基础的库,提供丰富的图表...

    使用Python的urllib和urllib2模块制作爬虫的实例教程

    urllib 学习python完基础,有些迷茫.眼睛一闭,一种空白的窒息源源不断而来.还是缺少练习,遂拿爬虫来练练手.学习完斯巴达python爬虫课程后,将心得整理如下,供后续翻看....@ urllib为python自带的一个网络库 @ urlo

Global site tag (gtag.js) - Google Analytics