Циклически просматривая файл CSV, но получая повторяющиеся результаты Python 3 / Selenium / BS4 - PullRequest
2 голосов
/ 16 апреля 2020

У меня есть CSV-файл, который имеет два URL (возможно, 100). Я пытаюсь открыть каждую ссылку в существующем браузере (по причинам входа в систему), распечатать URL-адрес и распечатать адрес соскоба. URL-адрес печатается правильно, но адрес печатается как первый адрес каждый раз. Я уверен, что упускаю что-то простое.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup

chrome_driver = "C:/chromedriver.exe"
Chrome_options = Options()
Chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9015")
driver = webdriver.Chrome(chrome_driver, options=Chrome_options)

source = driver.page_source
soup = BeautifulSoup(source, "html.parser")

with open('UTlinks.csv') as file:
    for line in file:
        driver.get(line)
        address = soup.find('span', class_='street-address').get_text()
        print(line + address)

вывод:

https://www.redfin.com/UT/Mapleton/175-E-600-N-84664/home/81569604
175 E 600 N 
https://www.redfin.com/UT/Mapleton/1918-W-800-N-84664/home/103092024
175 E 600 N

Желаемый вывод:

https://www.redfin.com/UT/Mapleton/175-E-600-N-84664/home/81569604
175 E 600 N 
https://www.redfin.com/UT/Mapleton/1918-W-800-N-84664/home/103092024
1918 W 800 N

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020
import io
from selenium import webdriver

f = io.StringIO("""https://www.redfin.com/UT/Mapleton/175-E-600-N-84664/home/81569604
https://www.redfin.com/UT/Mapleton/1918-W-800-N-84664/home/103092024
""")

driver = webdriver.Firefox()

for url in f.readlines():
    url = url.rstrip()
    driver.execute_script("window.open()")
    driver.switch_to_window(driver.window_handles[-1])
    driver.get(url)
    element = driver.find_element_by_css_selector("span.street-address").text
    print(f"{driver.current_url}\n{element}")
0 голосов
/ 16 апреля 2020

Если у вас есть URL на отдельных строках из CSV-файла, попробуйте этот подход,

    import csv

       chrome_driver = "C:/chromedriver.exe"
Chrome_options = Options()
Chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9015")
driver = webdriver.Chrome(chrome_driver, options=Chrome_options)

with open('UTlinks.csv') as file:
    readCSV = csv.reader(file)
    for row in readCSV:
        url = str(row).replace("['","").replace("']","")
        print(url)
        driver.get(url)
        html_content = driver.page_source
        soup = BeautifulSoup(html_content, "lxml")
        address = soup.find('span', class_='street-address')
        print(address.text)



driver.quit()

Вот вывод:

https://www.redfin.com/UT/Mapleton/175-E-600-N-84664/home/81569604 175
E 600 N 
https://www.redfin.com/UT/Mapleton/1918-W-800-N-84664/home/103092024
1918 W 800 N
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...