簡體   English   中英

使用 Selenium 在 Python 中抓取網頁

[英]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]")

這是主要問題。 之后的代碼看起來是正確的。
您不必使用這種方法獲取contentstables

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM