【问题标题】:How can i locate a specific class with beautifulsoup我如何使用 beautifulsoup 找到特定的班级
【发布时间】:2019-06-25 17:33:33
【问题描述】:

我想用 requests 和 beautifulsoup 运行一个简单的抓取机器人,但我无法确定我需要获取的元素,这就是令牌的欧盟价格

import requests
from bs4 import BeautifulSoup
link = "https://wowtokenprices.com/"
res = requests.get(link , headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,'html.parser')
container = soup.find_all("div", {"class":"col-sm-6 col-md-4 col-12 region-div eu-region-div"})
print (container)

打印输出包含我需要抓取的元素的数据较少

【问题讨论】:

标签: html python-3.x web-scraping beautifulsoup


【解决方案1】:

您可以使用 CSS 选择器a[href="EU"] ~ p。这意味着选择标签<a> 并将href 属性设置为"EU",然后选择第一个兄弟标签<p>。该标签包含您的值:

import requests
from bs4 import BeautifulSoup

link = "https://wowtokenprices.com/"
res = requests.get(link , headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,'lxml')

print(soup.select_one('a[href="EU"] ~ p').text)

打印:

183,491

【讨论】:

  • 谢谢!!!我是如此接近,但我找不到它。你能推荐我可以学习的任何书籍、视频、在线教程吗?
  • @Haunter 你可以看看 CSS 选择器 w3schools.com/cssref/css_selectors.asp 。但请注意,BeautifulSoup 并非全部支持
【解决方案2】:

这是使用相邻兄弟组合器的另一种方式,并且 :contains 伪类。需要 bs4 4.7.1

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://wowtokenprices.com/')
soup = bs(r.content, 'lxml')
print(soup.select_one('a:contains(EU) + .money-text').text)

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 2023-03-13
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多