2017-07-16 68 views
1

我是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是什么意思?

非常感谢。

回答

2

首先,让我们看看谈不上什么打印一体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' 
+1

非常感谢你们中的文本。还有一个问题:点是什么。意思? –

+1

在Python和其他面向对象编程(OOP)语言中,使用点来调用某个类的方法。例如,内建的类'str'(string)有一个名为'upper'的方法,它将所有的字符转换为大写,来调用它,我们这样做:'a =“这是一个字符串”'然后'a .upper()',或者简单的''这是一个字符串“.upper()'。看起来你对Python真的很陌生,[documentation](https://docs.python.org/3/library/string.html)有关于它的内置类的语法和方法的非常好的文本,如果你想进一步讨论这个话题。 –

+1

只是一个修正,最终没有使用'()'的写法实际上并不是调用方法,而是只引用与方法相关的对象。 –

0

这里, 。一个给你的第一锚标记 的.text给你的标签