• Python网页信息抓取


    使用正则抓取

    使用正则匹配需要抓取的内容执行页面抓取。但是正则性能不好,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中。

    #coding=utf-8
    import urllib.request #python3
    import re
    
    def getHtml(url):
        page = urllib.request.urlopen(url) #python3
        html=page.read()
        return  html
    #运行脚本将得到整个页面中包含图片的URL地址。
    def getImg(html,host):
        #reg = r'src="(.+?.jpg)" pic_ext'
        reg = r'src="(.+?.jpg)"'
        #re.compile() 可以把正则表达式编译成一个正则表达式对象.
        imgre = re.compile(reg)
        #html = html.decode('utf-8') #python3
        html = html.decode('utf-8','ignore')  #python3
        #re.findall() 方法读取html 中包含 imgre(正则表达式)的数据
        imglist = re.findall(imgre,html)
        # 把筛选的图片地址通过for循环遍历并保存到本地
        x = 0
        for imgurl in imglist:
            # urllib.urlretrieve()方法,直接将远程数据下载到本地
            urllib.request.urlretrieve(host+imgurl, 'd://img//%s.jpg' % x)
            x += 1
    
    html=getHtml("http://tieba.baidu.com/p/2460150866")
    print (getImg(html,""))
    
    
    
    #将获取的字符串strTxt做decode时,指明ignore,会忽略非法字符,
    #当然对于gbk等编码,处理同样问题的方法是类似的
    #strTest = strTxt.decode('utf-8', 'ignore')
    #return strTest
    ##[补充]
    #默认的参数就是strict,代表遇到非法字符时抛出异常;
    #如果设置为ignore,则会忽略非法字符;
    #如果设置为replace,则会用?号取代非法字符;
    #如果设置为xmlcharrefreplace,则使用XML的字符引用。

    使用Beautiful Soup抓取

    Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库,提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

    Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,BeautifulSoup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

    Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。文档地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.htmlhttps://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

    windows安装 Beautiful Soup

    下载地址:https://pypi.python.org/pypi/beautifulsoup4

    1 进入python安装目录下的Scripts目录,查看是否有pip工具。为了避免出现一些未知错误,DOS窗口使用管理员权限打开

    2 使用pip工具安装,在python安装目录下的Scripts目录下执行如下命令

    pip install beautifulsoup4

    3 验证

    python命令行下:
    import bs4

    4 如果需要升级pip 命令:

    python -m pip install -U pip


  • 相关阅读:
    【转】Javascript面向对象编程(二):构造函数的继承
    【转】Javascript 面向对象编程(一):封装
    js 碎片整理(变量声明,函数作用域)
    js函数表达式和函数声明的区别
    jquery实现input输入框实时输入触发事件代码(点击历史记录也会触发)
    JS控制,返回上一页之后强行刷新一次
    疯狂JAVA16课之对象与内存控制
    [转] C++的引用传递、指针传递参数在java中的相应处理方法
    Markdown编辑器测试
    15-01-07 C# 面向过程 08
  • 原文地址:https://www.cnblogs.com/shaner/p/7192338.html
Copyright © 2020-2023  润新知