Python:美丽的汤:无法从解析中获取完整的标题

时间:2016-07-23 10:35:42

标签: python html web-scraping beautifulsoup python-requests

我试图通过访问视频网站来练习抓取,并在主页上抓取所有视频标题。我唯一的问题是,如果标题太长,使用BeautifulSoup中的.string函数会缩短它。

以下是用于解析的示例HTML:

<head>...</head>
<body class="home">
    <div id="main">
        <div id="content">
            <div id="vid_28" class="thumb-block ">
                <div class="thumb-inside">...</div>
                <p>
                    <a href="/vid_28/0/this_is_a_great_video_"
                    title="this is a great video">this is a great vi...</a>
                </p>
            </div>
        </div>
    </div>
</body>

以下是我尝试使用以下代码打印标题的代码:

import requests
from bs4 import BeautifulSoup

url = "example"
r = requests.get(url)

soup = BeautifulSoup(r.content, "lxml")

links = soup.find_all("div", {"class":"thumb-block"})

for link in links:
    for tag in link.find_all("a")
        print(tag.string)

这段代码正在按照我想要的方式工作,除了它打印字符串“这是一个很棒的vi ......”,它被缩短了。

如果您在HTML中注意到,“title =”之后的文字永远不会被缩短。

如何修改我的代码以在元素中的“title =”之后获取括号中的文本,而不是获取被截断的文本?

1 个答案:

答案 0 :(得分:0)

我已经发现了我的问题,经过多次重读后我在文档中找到了它。

如果您要打印我想要&#34; title =&#34;的任何属性,我必须将print(tag.string)更改为print(tag['title'])

这是@Rawring和@ChaoticTwist首先提出的建议,但直到现在我还无法确定访问title属性的含义。

谢谢大家的时间。