当前位置: 首页 > 面试题库 >

美丽的汤findAll找不到全部

袁子瑜
2023-03-14
问题内容

我正在尝试解析一个网站,并通过BeautifulSoup.findAll获取一些信息,但它并没有全部找到。.我正在使用python3

代码是这个

#!/usr/bin/python3

from bs4 import BeautifulSoup
from urllib.request import urlopen

page = urlopen ("http://mangafox.me/directory/")
# print (page.read ())
soup = BeautifulSoup (page.read ())

manga_img = soup.findAll ('a', {'class' : 'manga_img'}, limit=None)

for manga in manga_img:
    print (manga['href'])

它只打印其中一半…


问题答案:

不同的HTML解析器对损坏的HTML的处理方式不同。该页面提供了损坏的HTML,lxml解析器对此的处理不佳:

>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('http://mangafox.me/directory/')
>>> soup = BeautifulSoup(r.content, 'lxml')
>>> len(soup.find_all('a', class_='manga_img'))
18

标准库html.parser在此特定页面上的麻烦较少:

>>> soup = BeautifulSoup(r.content, 'html.parser')
>>> len(soup.find_all('a', class_='manga_img'))
44

使用将其转换为您的特定代码示例urllib,您将这样指定解析器:

soup = BeautifulSoup(page, 'html.parser')  # BeatifulSoup can do the reading


 类似资料:
  • 问题内容: 我想使用漂亮的汤删除html文件中的所有注释。由于BS4将每个注释作为一种特殊类型的可导航字符串,所以我认为这段代码可以工作: 所以那行不通…。如何使用BS4查找所有评论? 问题答案: 您可以将函数传递给find_all()来帮助它检查字符串是否为Comment。 例如我有下面的HTML: 码: 输出将是: 顺便说一句,我认为不起作用的原因是(来自BeautifulSoup文档): 输

  • 问题内容: 我正在尝试解析一个网站,并通过BeautifulSoup.findAll获取一些信息,但它并没有全部找到。.我正在使用python3 代码是这个 它只打印一半… 问题答案: 不同的HTML解析器对损坏的HTML的处理方式不同。该页面提供了损坏的HTML,解析器对此的处理不佳: 标准库在此特定页面上的麻烦较少: 使用将其转换为您的特定代码示例,您将这样指定解析器:

  • 我看了stackoverflow上关于漂亮汤的大部分问题,只从网站上抓取了一半的数据,但是到目前为止没有一个有效。我尝试过将该功能更改为lxml或html5lib等。我也尝试使用硒,现在我尝试用硒向下滚动网站,加载网站上的所有内容,并使用漂亮的汤来抓取数据,但是当需要超过100个项目时,它只保留抓取16个项目。我在下面附上了我的代码。 我试图刮掉的网站链接:https://www.ranker.c

  • 我使用BeautifulSoup从HTML文件中提取信息。我希望能够捕获信息的位置,即BS标记对象的标记在HTML文件中的偏移量。 有办法做到这一点吗? 我目前使用的是lxml解析器,因为它是默认的。

  • 问题内容: 我正在尝试从Google搜索结果中提取链接。检查元素告诉我,我感兴趣的部分具有“ class = r”。第一个结果如下所示: 要提取“ href”,我要做: 但是我意外地得到: 我想要的地方: 属性“ ping”似乎使它感到困惑。有任何想法吗? 问题答案: 发生了什么? 如果您打印响应内容(即),则会看到您得到的HTML完全不同。页面源和响应内容不匹配。 因为内容是动态加载的,所以 不

  • 我试图抓取德国聚会的新闻页面,并将所有信息存储在数据框中(“蟒蛇初学者”)。当我想将整个文本甚至日期存储到数据框中时,只存在一个小问题。似乎只有文本的最后一个元素(p... /p)将被存储在行中。我认为问题的出现是因为循环上的迭代是误导的。