1

我正在尝试使用 BeautifulSoup + python 请求从网站上抓取文本。但它只是将 [] 作为输出。

from bs4 import BeautifulSoup
import requests

url = "http://nos.nl/artikel/2093082-steeds-meer-nekklachten-bij-kinderen-door-gebruik-tablets.html"
r  = requests.get(url)

soup = BeautifulSoup(r.content)

data = soup.find_all("div", {"class": "article_title"})

print data

输出:

[]

我试过了;

> data = soup.find_all("div", {"class": "article_title"}
> data = soup.find_all("div", class_="article_title") data =
> data = soup.find_all("div", class_="article")

我究竟做错了什么?

4

2 回答 2

2

有两个问题:

  • 网站上使用的标签是 a h1,而不是div
  • 类名是article__title(这是两个下划线!)。

所以你想要的是:

data = soup.find_all("h1", {"class": "article__title"})

这给了我们:

[<h1 class="article__title">Steeds meer nekklachten bij kinderen door gebruik tablets</h1>]

顺便说一句,我使用我的 Firefox 网络检查器快速获取这些信息 ;-) Chrome、Internet Explorer、Safari 以及我所知道的所有其他浏览器都内置了类似的工具。我强烈建议你至少学会使用它们的基础知识,因为它会让你的生活变得更轻松!

于 2016-03-16T11:38:58.000 回答
0

第一个问题是网站中没有article_title标签。如果你使用(两个下划线)它会返回一些东西,因为那是一个标签。查看 html 源代码以查看实际存在的标签!article__title

于 2016-03-16T11:43:56.700 回答