`
crazier9527
  • 浏览: 995005 次
  • 性别: 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中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。另外,requests也是非常有用的包,与此类似的,还有httplib2等等。 Requests: import requests response = requests.get(url) ...

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

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

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

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

    超级好的Python爬虫工具资源,分享出来.zip

    python Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scrapy,...首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。另外,requests也是非常有用的包,

    python爬虫小实例

    博主作为一个刚入门Python爬虫的新人,研究了一阵后,为了检验自己所以写了一个Python爬虫小程序,目的是为了爬取某网站的绅士图片并下载保存到本地。 思路 先打开目标网站的网址,先对其进行观察,俗话说的好,...

    Python面试题之爬虫(基础模块)

    Python自带:urllib、urllib2,第三方:requests 2. 谈谈他们的区别或者优缺点 urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。 urllib2:urllib2.urlopen可以接受一个Request对象或者url,...

    Python3实现的爬虫爬取数据并存入mysql数据库操作示例

    本文实例讲述了Python3实现的爬虫爬取数据并存入mysql数据库操作。分享给大家供大家参考,具体如下: 爬一个电脑客户端的订单。罗总推荐,抓包工具用的是HttpAnalyzerStdV7,与chrome自带的F12类似。客户端有接单...

    Python-试卷题目有答案-第13章-网络爬虫.docx

    Python-试卷题目有答案-第13章--网络爬虫全文共1页,当前为第1页。Python-试卷题目有答案-第13章--网络爬虫全文共1页,当前为第1页。13-1 请简述网络爬虫的基本工作流程。... 使用Python自带的urllib模块实现。 使用

    利用Python做数据分析

    python自带有一个Gadfly模块,提供了一个完整的SQL环境。 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它...

    Python高级编程

    python自带有一个Gadfly模块,提供了一个完整的SQL环境。 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它...

    python爬虫使用scrapy注意事项

    想着有些小伙伴在python学习的时候有点丢三落四的毛病,特意整理出来scrapy在python爬虫使用中需要注意的事项,大家一起看看吧。 1.如果需要大批量分布式爬取,建议采用Redis数据库存储,可安装scrapy-redis,使用...

    【基于Python+Django的毕业设计】信息安全领域中语义搜索引擎的设计(源码+录像演示+说明).zip

    本次的技术选择为一整套以Python技术为基础的开发工具,通过以Python语言、django框架以及Python自带的爬虫搜寻器来进行有效的整体的搜索引擎开发。 【实现功能】 在功能性的设计上,此次主要是围绕着语义搜索展开的...

    (基于python的毕业设计)信息安全领域中语义搜索引擎的设计(源码+说明+演示视频).zip

    本次的技术选择为一整套以Python技术为基础的开发工具,通过以Python语言、django框架以及Python自带的爬虫搜寻器来进行有效的整体的搜索引擎开发。 【实现功能】 在功能性的设计上,此次主要是围绕着语义搜索展开的...

    Python标准库

    python自带有一个Gadfly模块,提供了一个完整的SQL环境。 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它...

    Python实现简易Web爬虫详解

    假设互联网是一张很大的蜘蛛网,每个页面之间都通过超链接这根线相互连接,那么我们的爬虫小程序就能够通过这些线不断的搜寻到新的网页。 Python作为一种代表简单主义思想的解释型、面向对象、功能强大的高级编程...

    Linux部署python爬虫脚本,并设置定时任务的方法

    去年因项目需要,用python写了个爬虫。因爬到的数据需要存到生产环境的PG数据库。所以需要将脚本部署到CentOS服务器,并设置定时任务,自动启动脚本。 实施步骤如下: 1.安装pip(操作系统自带了python2.6可以直接用...

    Python多个地产网数据爬虫.zip

    地产爬虫:使用python+requests库,抓取ajax请求返回的json数据。 直接字符串截取,采用python低级编程方法,存储到自带sqlite3数据库。 全程未设延迟,未设代理,未设cookie,使用时请自行添加反爬措施。

    Python使用爬虫爬取静态网页图片的方法详解

    本文实例讲述了Python使用爬虫爬取静态网页图片的方法。分享给大家供大家参考,具体如下: ...一个是Python自带的urllib2模块;另一个是第三方控件requests。选用哪个其实差异不大,下一篇将会进行实践操作举例。 U

    Python 爬虫下载喜马拉雅音频文件1

    页面分析我们要下载音频文件,首先我们得要找到下载音频的 url,我们打开浏览器自带的调试工具(我用的是 Chrome),通过快捷键 F12 可快速打开调试工具。

    python爬虫BeautifulSoup实战练习

    lxml第三方网页解析库,也可以使用python自带html.parser re正则表达式用于查找提取字符 matplotlib.pyplot用于绘图 numpy用于辅助绘图处理对应数据 中途问题注意:使用CSS选择器选择获取了元素路径,但是带入...

Global site tag (gtag.js) - Google Analytics