【问题标题】:Python: BeautifulSoup extract all the span clases from div sectionPython:BeautifulSoup 从 div 部分中提取所有 span 类
【发布时间】:2017-12-20 18:20:20
【问题描述】:
from requests import get
from bs4 import BeautifulSoup

url = 'https://www.ceda.com.au/Events/Upcoming-events'

response = get(url)

events_container = html_soup.find_all('div', class_ = 'list-bx')

event1name = events_container[0]

print(event1name.a.text)

Eventdate = html_soup.find('div', class_ = ' col-md-4 col-sm-4 side-box well 
side-boxTop')

x = Eventdate.div.text
print(x)

我正在尝试在“col-md-4 col-sm-4 side-box”类上打印第二个跨度类 side-boxTop" 但是我无法从该类中打印第二个跨度类(第二个 P 标记(事件日期),因为每个跨度类没有唯一的跨度名称

【问题讨论】:

  • 你能提到你期望的一个这样的输出吗?

标签: python web-scraping beautifulsoup


【解决方案1】:

试试这个。它会为您获取您之后的日期:

from requests import get
from bs4 import BeautifulSoup

res = get('https://www.ceda.com.au/Events/Upcoming-events')
soup = BeautifulSoup(res.text,"lxml")
item_date = '\n'.join([' '.join(item.find_parent().select("span")[0].text.split()) for item in soup.select(".side-list .icon-calendar")])
print(item_date)

部分输出:

24/01/2018
30/01/2018
31/01/2018
31/01/2018

【讨论】:

    【解决方案2】:
    from requests import get
    from bs4 import BeautifulSoup
    url = 'https://www.ceda.com.au/Events/Upcoming-events'
    response = get(url)
    html_soup=BeautifulSoup(response.content,"lxml")
    
    events_container = html_soup.find_all('div', class_ = 'list-bx')
    
    event1name = events_container[0]
    
    print(event1name.a.text)
    
    Eventdate = html_soup.find('div', class_ = ' col-md-4 col-sm-4 side-box well side-boxTop')
    date=Eventdate.find_all("p")[1].text
    print(date)
    

    您也可以将 find_all 应用于父节点,这样您就可以使用 find_all 并导航到您想要的任何节点。

    现在您可以通过 textManipulation 左右来编辑您的日期。

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2022-01-26
      • 1970-01-01
      • 2021-07-03
      相关资源
      最近更新 更多