Python网页抓取:无法通过XPath找到元素。

huangapple go评论57阅读模式
英文:

Python Webscraping: Cannot find elements by xpath

问题

我对网页抓取相当新手,但我尝试在东京市的https://www2.evphvchargemap.com/map/tokyo上抓取所有标记。我尝试使用xpath来抓取元素,但它返回一个空数组。我想知道是否还有更有效的方法来获取这些元素。谢谢

import selenium
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.service import Service
import time
url = 'https://www2.evphvchargemap.com/map/tokyo'

driver = webdriver.Chrome()

driver.get(url)

# 等待页面加载完成(根据需要调整休眠时间)
time.sleep(30)

# 获取页面源代码
p = element = driver.find_elements("xpath",'//*[@id="map"]/div[1]/section/div/article/div[3]')
# 关闭WebDriver
driver.quit()

print(p)
#//*[@id="map_canvas"]/div/div/div[2]/div[2]/div/div[4]/div/div/div/div[1]/div/div/div/dl/dt

我尝试使用xpath查找,但返回一个空数组。此外,我尝试使用检查元素加载整个页面的HTML,但它仅部分显示了分区,并且无法完全显示点名称、点地址 - 这是我尝试获取的信息。

英文:

I am quite new to webscraping, but I was attempting to webscrape all the markers seen on https://www2.evphvchargemap.com/map/tokyo in the city of tokyo. I tried to scrape the elements using xpath but it returns an empty array. I was curious if there was also a more efficient way to retrieve such elements. Thank you

import selenium
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.service import Service
import time
url = 'https://www2.evphvchargemap.com/map/tokyo'

driver = webdriver.Chrome()

driver.get(url)

# Wait for the page to load (adjust the sleep duration if needed)
time.sleep(30)

# Get the page source
p = element = driver.find_elements("xpath",'//*[@id="map"]/div[1]/section/div/article/div[3]')
# Close the WebDriver
driver.quit()

print(p)
#//*[@id="map_canvas"]/div/div/div[2]/div[2]/div/div[4]/div/div/div/div[1]/div/div/div/dl/dt

I attempted to find using xpath but it returns an empty array. Also, I attempted to load the entire page's html using inspect element but it only displays partially the divisions and could not fully display the spot-name, spot-address - that is the information I am trying to obtain for all such markets

答案1

得分: 0

以下是代码部分的翻译:

import requests
import pandas as pd

data_url = 'https://www2.evphvchargemap.com/api/Data/chargermap.json'

data = requests.get(data_url).json()
df = pd.DataFrame(data['dataroot']['ChargerMap'])
print(df)

以下是打印输出的翻译:

      SpotId                                           SpotName    SpotLat     SpotLon Type                              ChargerType                                            Addr              Tel                                                                                                                     Open                                                                                                                                                                                                                                    Use                                                                                                                                                                                                                                                        Remarks                                                                                     SpotUrl
0        718                                   トヨタモビリティ東名古屋 新栄店  35.170132  136.923316    1                           200V ケーブル有り 1台                             愛知県名古屋市中区葵1丁目27番29号     052-935-6122                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
1        858                                    トヨタモビリティ神奈川 武山店  35.222898  139.643923    1                           200V ケーブル有り 1台                                  神奈川県横須賀市武3-7-7     046-857-1441                                                                                                 9:30~18:00{0}定休日:月曜日、火曜日                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                 詳細は店舗にてご確認ください                                                                  http://www.c-yokohama.com/
2        867                                 トヨタモビリティ東名古屋 鍋屋上野店  35.182980  136.953320    1                           200V ケーブル有り 1台                              愛知県名古屋市千種区谷口町5番35号    ,052-721-1261                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
3        899                                  トヨタモビリティ東名古屋 長久手店  35.171673  137.044353    1                           200V ケーブル有り 1台                                 愛知県長久手市武蔵塚910番地  ,0561 - 63 - 88                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
4        901                                  トヨタモビリティ東名古屋 山之手店  35.053668  137.149697    1                           200V ケーブル有り 1台                              愛知県豊田市御幸本町一丁目176番地  0565 - 29 - 211                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
5        967                                 トヨタモビリティ東名古屋 三好ヶ丘店  35.118450  137.111017    1                           200V ケーブル有り 1台                              愛知県みよし市三好丘6丁目4番地の1  ,0561 - 36 - 25                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
6       1041                                   トヨタモビリティ東名古屋 荒畑店  35.149990  136.925558    1                           200V ケーブル有り 1台                           愛知県名古屋市昭和区鶴舞4丁目17番23号     052-732-3541                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
7       1042                                 トヨタモビリティ東名古屋 三好中央店  35.090544  137.069709    1                           200V ケーブル有り 1台                                愛知県みよし市三好町上230番地  0561 - 33 - 250                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
8       1060                                  トヨタモビリティ東名古屋 島田
<details>
<summary>英文:</summary>
The data you see on the map is loaded from external URL (luckily in Json format):
```py
import requests
import pandas as pd
data_url = &#39;https://www2.evphvchargemap.com/api/Data/chargermap.json&#39;
data = requests.get(data_url).json()
df = pd.DataFrame(data[&#39;dataroot&#39;][&#39;ChargerMap&#39;])
print(df)

Prints:

      SpotId                                           SpotName    SpotLat     SpotLon Type                              ChargerType                                            Addr              Tel                                                                                                                     Open                                                                                                                                                                                                                                    Use                                                                                                                                                                                                                                                        Remarks                                                                                     SpotUrl
0        718                                   トヨタモビリティ東名古屋 新栄店  35.170132  136.923316    1                           200V ケーブル有り 1台                             愛知県名古屋市中区葵1丁目27番29号     052-935-6122                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
1        858                                    トヨタモビリティ神奈川 武山店  35.222898  139.643923    1                           200V ケーブル有り 1台                                  神奈川県横須賀市武3-7-7     046-857-1441                                                                                                 9:30~18:00{0}定休日:月曜日、火曜日                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                 詳細は店舗にてご確認ください                                                                  http://www.c-yokohama.com/
2        867                                 トヨタモビリティ東名古屋 鍋屋上野店  35.182980  136.953320    1                           200V ケーブル有り 1台                              愛知県名古屋市千種区谷口町5番35号    ,052-721-1261                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
3        899                                  トヨタモビリティ東名古屋 長久手店  35.171673  137.044353    1                           200V ケーブル有り 1台                                 愛知県長久手市武蔵塚910番地  ,0561 - 63 - 88                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
4        901                                  トヨタモビリティ東名古屋 山之手店  35.053668  137.149697    1                           200V ケーブル有り 1台                              愛知県豊田市御幸本町一丁目176番地  0565 - 29 - 211                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
5        967                                 トヨタモビリティ東名古屋 三好ヶ丘店  35.118450  137.111017    1                           200V ケーブル有り 1台                              愛知県みよし市三好丘6丁目4番地の1  ,0561 - 36 - 25                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
6       1041                                   トヨタモビリティ東名古屋 荒畑店  35.149990  136.925558    1                           200V ケーブル有り 1台                           愛知県名古屋市昭和区鶴舞4丁目17番23号     052-732-3541                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
7       1042                                 トヨタモビリティ東名古屋 三好中央店  35.090544  137.069709    1                           200V ケーブル有り 1台                                愛知県みよし市三好町上230番地  0561 - 33 - 250                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
8       1060                                  トヨタモビリティ東名古屋 島田橋店  35.123910  136.970961    1                           200V ケーブル有り 1台                            愛知県名古屋市天白区元八事3丁目71番地  052 - 835 - 202                                                                                                      8:00~19:00{0}定休日:なし                                                                                                                                                                                                      利用可能カード:EV・PHV充電サポート{0}最大充電時間:1時間                                                                                                                                                                                                                                                詳細は店舗にてご確認ください。                                                                                         NaN
...

huangapple
  • 本文由 发表于 2023年6月9日 01:42:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/76434436.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定