我正在尝试使用Python,Requests和BeautifulSoup从以下网站(www.mars.com/locations(获取所有位置。
该网站有一个过滤器来选择洲、国家和地区,以便它只显示公司在所选区域的位置。他们还在页面底部包括他们的总部,无论应用何种过滤器,此信息始终存在。
使用以下代码提取总部的数据没有问题:
import requests
from bs4 import BeautifulSoup
url = 'https://www.mars.com/locations'
page = requests.get(url)
soup = BeautifulSoup(page.text,'html.parser')
HQ = soup.find('div', class_='global-headquarter pr-5 pl-3').text.strip()
print(HQ)
代码的输出为:
玛氏公司(全球总部( 6885榆树街 麦克莱恩 弗吉尼亚州 22101 +1(703( 821-4900
我想对所有其他位置做同样的事情,但我正在努力使用相同的方法提取数据(当然,调整路径(。我已经尝试了一切,但我没有想法。真的很感激有人帮我一把,或者至少为我指出正确的方向。
提前非常感谢!
所有位置数据都可以以文本格式检索。将其分解为字符串是一种方法。我不是这个领域的专家,所以我不能再帮助你了。
content_json = soup.find('div', class_='location-container')
data = content_json['data-location']
我不是BeautifulSoup的专家,所以我将使用Parsol来获取数据。 所有位置都嵌入在具有data-location
属性的location-container
CSS 类中。
import requests
from parsel import Selector
response = requests.get(url).text
selector = Selector(text=response)
data = selector.css(".location-container").xpath("./@data-location").getall()