• Python pause 暂停程序执行

    废话不多说了,两种基本解决方案如下:

    1.  使用os库方法

    import os

    os.system('PAUSE')     #注意 PAUSE 必须大写

     

    2. 接收一个输入

    raw_input('Press any key and Enter to continue ~!')

     

  • Python Scrapy抓取数据中文存utf8乱码问题

    继 http://blog.wdoc.info/note/79.html (在回调函数中加载新页面XPath)之后

    最近出现了 网页GB2312编码,无法正常转换为utf8存入数据库的问题

     网上大肆搜寻一番,说的编码转换一一试过,似乎问题不太好解决

    于是直接在命令行下 使用python    >>>scrapy shell  http://my.test.url

     加载页面之后输出类容 来看了下 (截取了一部分)测试片段 如下

    >>>tt = "\xe6\x98\xaf\xe4\xb8\x80\xe5\xae\xb6\xe4\xb8\x93\xe4\xb8\x9a\xe9\x94\x80\xe5\x94\xae\xe3\x80\x8a\xe9\x93\x85\xe9\x85\xb8\xe5\x85\x8d\xe7\xbb\xb4\xe6\x8a\xa4\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8aUPS\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe7\x9b\xb4\xe6\xb5\x81\xe5\xb1\x8f\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8aEPS\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe5\xa4\xaa\xe9\x98\xb3\xe8\x83\xbd\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe9\x93\x85\xe9\x85\xb8\xe5\x85\x8d\xe7\xbb\xb4\xe6\x8a\xa4\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe8\x83\xb6\xe4\xbd\x93\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xef\xbc\x8c\xe5\x8c\x85\xe6\x8b\xac\xe5\xae\x89\xe8\xa3\x85\xe3\x80\x81\xe8\xb0\x83\xe8\xaf\x95\xe5\x8f\x8a\xe7\xbb\xb4\xe4\xbf\xae..."

    >>>print tt  

    直接乱码

    >>>print tt.decode('utf8','ignore')

    显示正常中文(ignore 在解码过程中直接忽略异常编码)

    但是在Scrapy中

    temp = urllib2.urlopen(newurl) #请求
    temp = temp.read() #读数据

    temp = temp.decode('utf8','ignore') # 这样会提示找不到默认编码...
    newresponse = HtmlResponse(newurl)
    newresponse._set_body(temp)

    于是最终解决方案

    temp = temp.decode('utf8','ignore').encode('gbk') 

     

    #过程比较潦草,仅做记录  欢迎指正

    #如果对python 如何使用Scrapy加载网页不熟悉的朋友,请先参阅 http://blog.vsfor.com/note/79.html

     

  • Python操作文件及文件目录常用方法(他山之石)

    注意:Windows环境下操作的过程中需要注意目录的分隔符为 \ 所以通常需要对路径分隔符做转义处理

    源自: http://hi.baidu.com/pythond/item/c6bc99491cfb0be9a5c066a8

    python 操作windows下的目录


    python操作目录、文件相关的函数,在os模块中,当然或许也有别的模块提供了更方便的函数
    以下列出的所有函数均亲自测试过!

    1、os.getcwd()         os.chdir(dir)      #获取当前目录 ,改变当前目录为dir

    2、os.listdir(dir)        #获取目录内容,其结果为list类型

    3、os.mkdir(dir)        #创建目录

    4、os.rmdir(dir)         # 删除空目录,如果目录中有内容,则出错

    5、os.path.isdir(dir)                    #判断是否为目录

    6、os.path.isfile(file)                   #判断是否为文件

    7、os.path.isabs(path)               #判断是否为绝对路径

    8、os.path.abspath(path)           #取得绝对路径

    9、os.path.dirname(path)           #取得父目录

    10、os.path.exists(path)            #判断目录或文件是否存在

    11、os.path.getsize(path)          #取得文件大小

    12、os.path.getctime(path)   getmtime(path) getatime()      #取得文件的创建、修改、最后存储的时间

    #不过取得是浮点数,需要用time模块中的time.ctime(float) 或time.localtime(float)转换成可识别的格式

    13、os.path.split(path)             #分割路径,结果为元组,如(‘c:\\windows','system32')

    14、os.path.splitext(path)        #分割扩展名,结果如 (‘c:\\windows\\system32\\cmd','.exe')

    15、os.rename(file1,file2)         #将file1文件更名为file2文件

    16、os.remove(file)                  #删除file文件

    17、os.walk(path,topdown) #目录遍历

    一下是调用os.walk的例子,遍历指定的目录

    def walk_dir(dir, topdown=True):
        for root, dirs, files in os.walk(dir, topdown):
            for name in files:
                print(os.path.join(root, name))
            for name in dirs:
                print(os.path.join(root, name))


    glob模块

    glob.glob("*.py")                    #返回当前目录下所有以.py为后缀的目录或文件


    shutil模块

    shutil.copyfile(src,dst)             #拷贝文件

    shutil.copystat(src,dst)           #拷贝文件,连同文件的stat一起拷贝

    shutil.copytree(src,dst)           #拷贝目录,拷贝之前dst必须不存在

  • Scrapy在回调函数中直接请求新页面XPath

    使用Scrapy抓取数据时,往往需要将多个页面的内容拼凑到一起然后保存

    具体的需求情况就不啰嗦了

    如下是简单的测试代码

    #在函数中请求加载 新页面,片段代码
    from scrapy.http import Request,HtmlResponse  #载入相关类,如果头部有可以直接移除
    from scrapy.selector import HtmlXPathSelector  #同上
    import urllib2  #同上
    newurl = 'http://www.baidu.com'  #新页面的url (必须是包含协议名称的完整url)
    temp = urllib2.urlopen(newurl) #请求
    temp = temp.read() #读数据
    newresponse = HtmlResponse(newurl)
    newresponse._set_body(temp)
    temp = HtmlXPathSelector(newresponse) #构建新的xpath选择器
    print temp.select('//title/text()').extract()[0] #测试

     

    欢迎留言交流

     

  • Scrapy使用cx_Oracle插入数据时中文乱码问题

    使用Python的爬虫框架Scrapy时  往往需要将爬到的数据保存到数据库

    而这边用的是Oracle,环境配置之类的网上很多这边就不赘述了

    编码中涉及中文时 python文件开头添加 ##coding=utf-8 是必不可少的

    乱码解决:

    Linux 环境下,设置环境变量

    NLS_LANG=AMERICAN_AMERICA.AL32UTF8

     

    同理Windows环境下 乱码也跟这个没有设置的环境变量有关,但是并不是这样解决的

    Windows主要是通过os 模块修改环境变量,解决参考代码如下

    ##coding=utf-8
    # Define your item pipelines here
    #
    # Don't forget to add your pipeline to the ITEM_PIPELINES setting
    # See: http://doc.scrapy.org/topics/item-pipeline.html
    import cx_Oracle
    import os
    os.environ['NLS_LANG']="AMERICAN_AMERICA.AL32UTF8"

     

    当然网络上也有 os.environ['NLSLANG'] = 'SIMPLIFIED CHINESECHINA.UTF8' 的配置方案,如有同样问题,就测测看吧:)

click
©2010-2024 Jeen All Rights Reserved.Powered by emlog 京ICP备15058100号-1