似乎无法使用BS4从元素中提取文本

时间:2018-12-22 13:46:40

标签: html python-3.x beautifulsoup

我正在尝试在以下网页上提取名称:https://steamcommunity.com/market/listings/730/AK-47%20%7C%20Redline%20%28Field-Tested%29

我试图从中获取的元素是

<h1 class="hover_item_name" id="largeiteminfo_item_name" style="color: 
rgb(210, 210, 210);">AK-47 | Redline</h1>

我能够使用硒搜索ID“ largeiteminfo_item_name”并以这种方式检索文本,但是当我用bs4复制它时,我似乎找不到文本。

我曾经尝试搜索“ item_desc_description”类,但在该处也找不到文本。我在做什么错了?

a = soup.find("h1", {"id": "largeiteminfo_item_name"})
a.get_text()

a = soup.find('div', {'class': 'item_desc_description'})
a.get_text()

我期望“ AK-47 |红线”,但第一次尝试收到“”,并且'\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n'第二次尝试。

1 个答案:

答案 0 :(得分:0)

您要提取的数据不在HTML页面中,我想它可能是用JavaScript生成的(只是猜测)。

enter image description here

但是我设法在div“ market_listing_nav”中找到了信息。

from bs4 import BeautifulSoup as bs4
import requests

lnk = "https://steamcommunity.com/market/listings/730/AK-47%20%7C%20Redline%20%28Field-Tested%29"
res = requests.get(lnk)

soup = bs4(res.text, features="html.parser")
elem = soup.find("div", {"class" : "market_listing_nav"})

print(elem.get_text())

这将输出以下内容

Counter-Strike: Global Offensive
                    >
                                        AK-47 | Redline (Field-Tested)

查看网页源代码中具有更好格式的标记,或者只是清理我的代码生成的标记。