【问题标题】:Beautifulsoup: Can't find tagBeautifulsoup:找不到标签
【发布时间】:2019-09-02 13:22:18
【问题描述】:

我是一名 Python 初学者,几周前我开始使用 beautifulsoup。现在我正在尝试构建一个简单的项目来抓取一些 Aliexpress 产品上发布的评论的国家信息。当我检查网站上的 HTML 代码时,我发现我应该在 beautifulsoup 中寻找的是 class="css_flag ..." (见附图https://i.stack.imgur.com/LgMae.png)但我找不到它。

我试图提取所有的“b”标签但没有运气。我还在控制台中打印了整个汤,然后将其复制到 wordfile 并手动搜索 class="css_flag ..." 并没有找到任何结果。

这是我现在正在使用的代码

from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import re

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = input('Enter - ')
html = urlopen(url, context=ctx).read()
soup = BeautifulSoup(html, "html.parser")


tags = soup('b')
for tag in tags:
    print(tag)

我希望代码返回所有包含“css_flag”的字符串。非常感谢您对此的帮助,在此先感谢!

【问题讨论】:

  • 您是否检查了您获得的实际html 代码?即,如果他们使用 javascript,您在浏览器中看到的内容可能与您获得的 html 不同(即未呈现 javascript 内容)。
  • 这些元素或类可能是由 Javascript 创建的,因此在最初下载的数据中不可用。尝试将您尝试打开的 URL 下载到文件中,然后查看文本编辑器中的内容。
  • 有没有办法可以下载该javascript信息?

标签: python beautifulsoup


【解决方案1】:

您将使用另一个 url 来访问它。您需要提供一些查询数据,例如 productId 编号等,但您可以获得所需的数据。下面的代码/示例:

import bs4
import requests

request_url = 'https://feedback.aliexpress.com/display/productEvaluation.htm'

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}

payload = {
'v': '2',
'productId': '33023202345',
'ownerMemberId': '232182005',
'companyId': '241422497',
'memberType': 'seller',
'startValidDate':'',
'i18n': 'true'}

res = requests.get(request_url, headers=headers, params=payload)
soup = bs4.BeautifulSoup(res.text)
tags = soup('b')
for tag in tags:
    print(tag)

输出:

<b class="r-graph-scroller" style="width:94.0%;"></b>
<b class="r-graph-scroller" style="width:5.0%;"></b>
<b class="r-graph-scroller" style="width:0.0%;"></b>
<b class="r-graph-scroller" style="width:1.0%;"></b>
<b class="r-graph-scroller" style="width:0.0%;"></b>
<b>4.9</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>
<b class="css_flag css_ru">RU</b>

【讨论】:

  • 非常感谢您的帮助!!
  • 我想知道你能否解释一下这个脚本是如何工作的,因为我真的很想了解为什么这个方法有效而我发布的常规代码没有。提前致谢
  • 谢谢,我刚刚给你发了一封电子邮件。
猜你喜欢
  • 2020-06-04
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多