打印文章标题
问题描述:
我是Python新手。以下是Python中的一些编码行,用于打印出http://www.nytimes.com/上的所有文章标题。打印文章标题
import requests
from bs4 import BeautifulSoup
base_url = 'http://www.nytimes.com'
r = requests.get(base_url)
soup = BeautifulSoup(r.text)
for story_heading in soup.find_all(class_="story-heading"):
if story_heading.a:
print(story_heading.a.text.replace("\n", " ").strip())
else:
print(story_heading.contents[0].strip())
.a
和.text
是什么意思?
非常感谢。
答
首先,让我们看看谈不上什么打印一体story_heading
给我们:
>>> story_heading
<h2 class="story-heading"><a href="https://www.nytimes.com/real-estate/mortgage-calculator">Mortgage Calculator</a></h2>
要提取仅的a
标签,我们访问它使用story_heading.a
:
>>> story_heading.a
<a href="https://www.nytimes.com/real-estate/mortgage-calculator">Mortgage Calculator</a>
为了只得到文本里面的标签本身,而不是它的属性,我们使用.text
:
>>> story_heading.a.text
'Mortgage Calculator'
答
这里, 。一个给你的第一锚标记 的.text给你的标签
非常感谢你们中的文本。还有一个问题:点是什么。意思? –
在Python和其他面向对象编程(OOP)语言中,使用点来调用某个类的方法。例如,内建的类'str'(string)有一个名为'upper'的方法,它将所有的字符转换为大写,来调用它,我们这样做:'a =“这是一个字符串”'然后'a .upper()',或者简单的''这是一个字符串“.upper()'。看起来你对Python真的很陌生,[documentation](https://docs.python.org/3/library/string.html)有关于它的内置类的语法和方法的非常好的文本,如果你想进一步讨论这个话题。 –
只是一个修正,最终没有使用'()'的写法实际上并不是调用方法,而是只引用与方法相关的对象。 –