zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    Java实现 洛谷 P1060 开心的金明
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1605 迷宫
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1031 均分纸牌
    QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
    武则天红人对唐睿宗的桃色报复(如此缺少城府,注定了要在宫廷中过早地出局)
  • 原文地址:https://www.cnblogs.com/shaner/p/7192338.html
Copyright © 2011-2022 走看看