我试图通过访问视频网站来练习抓取,并在主页上抓取所有视频标题。我唯一的问题是,如果标题太长,使用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 =”之后获取括号中的文本,而不是获取被截断的文本?
答案 0 :(得分:0)
我已经发现了我的问题,经过多次重读后我在文档中找到了它。
如果您要打印我想要&#34; title =&#34;的任何属性,我必须将print(tag.string)
更改为print(tag['title'])
这是@Rawring和@ChaoticTwist首先提出的建议,但直到现在我还无法确定访问title属性的含义。
谢谢大家的时间。