[英]Web scraping in Python using Selenium
我是网络抓取的新手,我正面临一个问题。 在附加部分,它似乎只附加了我想刮的表的第一行! 我确定我错过了一些东西。 有任何想法吗? 提前致谢! 代码片段如下:
driver = visit_main_page()
contents = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]')
tables = contents[0].find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table')
data = {"Date": [], "Time": [], "Place": [], "Latitude": [], "Longitude": [], "Fatalities": [], "Magnitude": []}
for i in tables:
try:
dates = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[1]')
times = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[2]')
places = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[3]')
lat = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[4]')
long = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[5]')
fat = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[6]')
magn = driver.find_elements_by_xpath('//*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[1]/td[7]')
except NoSuchElementException:
print('No such content!')
pass
time.sleep(1)
for d in dates:
data['Date'].append(d.text)
for t in times:
data['Time'].append(t.text)
for p in places:
data['Place'].append(p.text)
for la in lat:
data['Latitude'].append(la.text)
for lo in long:
data['Longitude'].append(lo.text)
for f in fat:
data['Fatalities'].append(f.text)
for m in magn:
data['Magnitude'].append(m.text)
UPD
您使用了错误的定位器。
您尝试获取的所有参数都以//*[@id="mw-content-text"]/div[1]/table[2]
开头 - 这指向特定表。
要收集您正在寻找的数据,请尝试以下操作:
dates = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[1]")
times = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[2]")
places = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[3]")
lat = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[4]")
long = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[5]")
fat = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[6]")
magn = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[7]")
dates = driver.find_elements_by_xpath("//table[contains(@class,'wikitable')]//tbody//tr//td[1]")
这是主要问题。 之后的代码看起来是正确的。
您不必使用这种方法获取contents
和tables
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.