我试图web废料的链接,包含经度和纬度的值,但不幸的是,我不能找出我做错了什么。我的代码如下:
from bs4 import BeautifulSoup
import requests
headers= {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/102.0.0.0 Safari/537.36'}
Latitude=[]
Longitude=[]
url='http://www.geonames.org/5549030'
r= requests.get(url, headers=headers)
soup= BeautifulSoup(r.text, 'html.parser')
longitude_findall = soup.find_all ('div', attrs= {'class': 'tab-content'})
for item in info:
latitude= item.find('span',{'title':'latitude'})
print(latitude)
网站该网站正在动态加载信息。在这种情况下,您需要打开Dev Tools并查找Network选项卡,以查看进行了哪些调用。您可能会看到为某些JSON数据访问另一个url,就像在这个例子中一样。
下面的代码工作,并返回您需要的(以及更多信息,只需检查json响应):
from bs4 import BeautifulSoup
import requests
headers= {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
Latitude=[]
Longitude=[]
url='http://www.geonames.org/getJSON?id=5549030'
r= requests.get(url, headers=headers)
print(r.json()['lat'])
结果:
39.25024