AttributeError: объект 'list' не имеет атрибута 'find_element' при попытке сканирования subway.co.kr - PullRequest
0 голосов
/ 28 мая 2020

Я пытался очистить магазин метро и создать таблицу, заполненную адресами, именами и телефонными номерами. Однако мой код продолжает давать результаты с ошибками. Ниже мой код

import time
import requests
import csv
from selenium.webdriver.common.by   import By
from selenium.webdriver             import ActionChains
from bs4        import BeautifulSoup
from selenium   import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
url1 = 'http://subway.co.kr/storeSearch?page='
url2 = '&rgn1Nm=&rgn2Nm=#storeList'

addresses = []
names = []
phones = []

for i in range(41):
    driver.get(url1 + str(i) + url2)
    lst = driver.find_elements_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div/div/div[1]/table/tbody/tr')
    for row in lst:
        addresses.append(lst.find_element(By.XPATH, './td[2]/div/a').text)
        names.append(lst.find_element(By.XPATH, './td[1]/a').text)
        phones.append(lst.find_element(By.XPATH, './td[4]/div').text)

stores = [{
    'address'   : props[0],
    'name'      : props[1],
    'phone'     : props[2]
} for props in zip(addresses, names, phones)]

with open('stores.csv', 'w') as csvfile:
    csvout = csv.DictWriter(csvfile, ['address', 'name', 'phone'])
    csvout.writeheader()
    csvout.writerows(stores)

, так как мне получить доступ к каждому элементу (адрес, имя, телефон) в каждой строке? Я также добавляю изображение страницы из набора страниц, которые я пытаюсь сканировать.

subway page of store infos

1 Ответ

1 голос
/ 28 мая 2020

Вы вызываете find_element в объекте списка, я подозреваю, что вы хотите использовать вместо этого row, которые являются элементами, которые вы перебираете. Измените

addresses.append(lst.find_element(

на

addresses.append(row.find_element(

И то же самое для names и phones

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...