【问题标题】:How to select all tags <b> HTML如何选择所有标签 <b> HTML
【发布时间】:2021-04-03 21:56:39
【问题描述】:

从这个webpage 我需要选择所有标签&lt;b&gt; &lt;/b&gt; 和BeautifulSoup4。

url = "http://lib.ru/GrepSearch?Search=%E3%E5%F0%EE%E9+%ED%E0%F8%E5%E3%EE+%E2%F0%E5%EC%E5%ED%E8"
r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')
author = soup.select('b')
print(author)

我曾尝试使用find_all() 和select(),但在数组中使用时它们无法显示所有&lt;b&gt; 标签

【问题讨论】:

标签: python web-scraping beautifulsoup


【解决方案1】:

这不一定是解析器问题,但无论如何,这个例子应该给你最初请求的书的作者和名称:

示例

import requests, re
from bs4 import BeautifulSoup

url = "http://lib.ru/GrepSearch?Search=%E3%E5%F0%EE%E9+%ED%E0%F8%E5%E3%EE+%E2%F0%E5%EC%E5%ED%E8"
r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')

[{"author":bTag.find_next('b').text, "name": bTag.find_next('ul').text.strip()} for bTag in soup.find_all(string='[dir] ')]

输出

[{'author': 'Джойс Кэри', 'name': 'Герой нашего времени'},
 {'author': 'Михаил Юрьевич Лермонтов', 'name': 'Герой нашего времени'},
 {'author': 'Владимир Маканин',
  'name': 'Андеграунд, или Герой нашего времени'}]

【讨论】:

    【解决方案2】:

    解析html文档时使用了不同的解析器,最常用的是'html.parser'。我在这里使用了 lxml,它同时使用 xml 和 html 来解析文档。 此处的代码应该为您提供您要求的原始输出(作者和书名)。您仍然需要对其进行处理才能获得所需的输出。

    导入请求
    从 bs4 导入 BeautifulSoup
    
    requests = requests.get('http://lib.ru/GrepSearch?Search=history')
    
    src = requests.content
    
    汤= BeautifulSoup(src,'lxml')
    
    b_tags = soup.find_all('b')
    
    对于 b_tags 中的 b:
        打印(b.文本)
    

    输出如下:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多