美丽的汤'结果集'对象没有属性' text'

时间:2016-03-18 17:57:53

标签: python beautifulsoup

shopt -s expand_aliases

嗨,如果我没有" .text"运行此代码,我就会遇到Beautiful Soup的问题。最后它给我看了一个div列表但是如果我添加" .text"最后出现错误

  

追踪(最近一次通话):        文件" script.py",第15行,in          打印(body.text)    AttributeError:' ResultSet'对象没有属性' text'

3 个答案:

答案 0 :(得分:5)

ind['test3']返回一个ResultSet对象,您可以使用find_all循环进行迭代。你能做的是:

for

答案 1 :(得分:3)

如果您输入:

server {
    listen   ***.***.**.***:80;
    server_name  example.com www.example.com;

    root C:\Users\Administrator\Dropbox\websites\php_website;
    index index.php index.html;

    log_not_found off;
    charset utf-8;

    #access_log  logs/example.com-access.log  main;

    location ~ /\. {allow all;}

    location / {
        rewrite ^/(|/)$ /index.php?url=$1;
        rewrite ^/([a-zA-Z0-9_-]+)(|/)$ /index.php?url=$1;
        rewrite ^/(.*)\.htm$ /$1.php;
    }

    location = /favicon.ico {
    }

    location = /robots.txt {
    }

    location ~ \.php$ {
        if (!-e $document_root$document_uri){return 404;}
        fastcgi_pass localhost:9054;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

您会看到print(type(body)) body这意味着所有与该类匹配的元素。你可以迭代它们:

<class 'bs4.element.ResultSet'>

或者,如果您知道自己只有div,则可以改为使用for div in body: print(div.text)

find

答案 2 :(得分:1)

可能应该发布答案..所以在评论中几乎逐字地说明

您的代码应如下:

for div in body: 
    print div.text
    #python3
    #print(div.text)

或根据您的偏好设置一些命名架构。

find_all方法返回一个生成的列表(松散地使用这里的术语列表),这些项目是beautifulsoup找到的符合条件的项目,在根据您搜索的方式递归或非递归地解析源网页html之后。< / p>

由于错误表明生成的对象集没有属性文本,因为它不是元素,而是它们的集合。 但是,结果集中的项目(应该找到)都可以。

您可以查看文档here