Python HTML中div元素上漂亮的汤循环

Python HTML中div元素上漂亮的汤循环,python,html,pandas,beautifulsoup,Python,Html,Pandas,Beautifulsoup,我正在尝试使用BeautifulSoup从网页中提取一些值,这在这里不是很明智。。它们是。在Chrome开发者模式下,我可以看到这些值嵌套在div类中,如下图所示: 在Python中,我可以尝试模拟web浏览器并找到以下值: import requests import bs4 as BeautifulSoup import pandas as pd from bs4 import BeautifulSoup url = 'https://www.weatherbug.com/weather-

我正在尝试使用BeautifulSoup从网页中提取一些值,这在这里不是很明智。。它们是。在Chrome开发者模式下,我可以看到这些值嵌套在div类中,如下图所示:

在Python中,我可以尝试模拟web浏览器并找到以下值:

import requests
import bs4 as BeautifulSoup
import pandas as pd
from bs4 import BeautifulSoup

url = 'https://www.weatherbug.com/weather-forecast/hourly/san-francisco-ca-94103'

header = {
  "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
  "X-Requested-With": "XMLHttpRequest"
}

page = requests.get(url, headers=header)

soup = BeautifulSoup(page.text, 'html.parser')
通过下面的代码,我可以找到12个小时卡移动秒div类,这似乎是正确的,因为在搜索小时预测时,我可以看到未来数据的12个小时/变量。我不知道为什么我拿起一个移动设备的方法来查看

temp_containers = soup.find_all('div', class_ = 'hour-card__mobile__cond')
print(type(temp_containers))
print(len(temp_containers))
输出:

<class 'bs4.element.ResultSet'>
12
51°

52°

53°

54°

53°

53°

52°

51°

51°

50°

50°

49°
编辑,根据答案用数据框完成代码

页面加载后,通过JavaScript动态加载网站。因此,您可以使用或硒

从selenium导入webdriver 从selenium.webdriver.firefox.options导入选项 选项=选项 选项。添加参数“-headless” driver=webdriver.Firefoxoptions=options 司机,快 https://www.weatherbug.com/weather-forecast/hourly/san-francisco-ca-94103 data=driver.find\u elements\u by\u css\u selectordiv.temp.ng-binding 对于数据中的项目: printitem.text 司机,退出 输出:

<class 'bs4.element.ResultSet'>
12
51°

52°

53°

54°

53°

53°

52°

51°

51°

50°

50°

49°
按用户请求更新:

导入请求 从bs4导入BeautifulSoup r=requests.get https://www.weatherbug.com/weather-forecast/hourly/san-francisco-ca-94103 soup=BeautifulSoupr.text,“html.parser” 对于汤中的项目,选择div.hour-card\uuuu mobile\uuuu cond: item=intitem.contents[1]。get_textstrip=True[:-1] 打印项目 输出:

<class 'bs4.element.ResultSet'>
12
51°

52°

53°

54°

53°

53°

52°

51°

51°

50°

50°

49°
51 52 53 53 53 53 52 51 51 50 50 50
当您看到class=temp ng binding时,这意味着div具有temp和ng绑定的类,因此查找两者都不起作用。另外,当我运行脚本时,临时容器的html如下所示:

print(temp_containers[0])

<div class="temp">
                    51°
</div>

数据是通过JavaScript加载的,你知道吗?不,我不知道!美丽的汤还能用吗?@aԋ625;ҽԃαєιcαη这是你需要使用另一个像PyQt4这样的包的地方吗?谢谢你,我有一些路径问题。试图解决!好吧,这肯定行得通:把它作为整数放在一个数组中会很难吗?@HenryHub你想把它作为51°或51°插入吗?就像51°符号一样谢谢你的帮助!