Python HTML中div元素上漂亮的汤循环
我正在尝试使用BeautifulSoup从网页中提取一些值,这在这里不是很明智。。它们是。在Chrome开发者模式下,我可以看到这些值嵌套在div类中,如下图所示: 在Python中,我可以尝试模拟web浏览器并找到以下值: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-
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°符号一样谢谢你的帮助!