데이터베이스에서 webdriver로 URL을 전달하는 동안 오류가 발생했습니다.

Sandeep

일부 데이터를 스크랩하기 위해 Python과 함께 셀레늄을 사용하고 있습니다. 코드는 단일 URL에 대해 잘 작동합니다 (URL을 하드 코딩하면), 우리의 경우에는 많은 URL이 있으며 데이터베이스에서 웹 드라이버로 URL을 전달할 계획입니다.

하지만 내가했을 때 예외가 발생하면 아래 코드와 예외가 있습니다. 누구 내가 뭘 잘못하고 있는지 알려줄 수 있습니까?

이 줄에서 예외가 발생합니다. browser.get (passed_url) 하지만 아래와 같이 문자열로 전달하면 작동하는 browser.get ( ' https://www.google.com/search?q=vitamin+b12 ')

from bs4 import BeautifulSoup
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException
import psycopg2
import os
import glob
import datetime


option = webdriver.ChromeOptions()
option.add_argument(" — incognito")
#browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver/', chrome_options=option)
browser = webdriver.Chrome(executable_path='/users/user_123/downloads/chrome_driver/chromedriver', chrome_options=option)

try:
#Database connection string
 DSN = "dbname='postgres' user='postgres' host='localhost' password='postgres' port='5432'"
 #DWH table to which data is ported
 TABLE_NAME = 'staging.search_url'
 #Connecting DB..
 conn = psycopg2.connect(DSN)
 print("Database connected...")
 conn.set_client_encoding('latin-1')
 cur = conn.cursor()
 cur.execute("SET datestyle='German'")
except (Exception, psycopg2.Error) as error:
 print('database connection failed')
 quit()



search_url_fetch="""select url_to_be_searched from staging.search_url"""
psql_cursor = conn.cursor()
psql_cursor.execute(search_url_fetch)
serach_url_list = psql_cursor.fetchall()
print('Fetched DB values')
for row in serach_url_list:
    passed_url=''
    passed_url=str(row)
    passed_url=passed_url.replace(',)','')
    passed_url=passed_url.replace('(','')
    print(passed_url)
    print("\n")

    browser.get('https://www.google.com/search?q=vitamin+b12')
    #browser.get(passed_url)
    full_titles_element = browser.find_elements_by_xpath("//div[@class='mnr-c pla-unit']")
    # use list comprehension to get the actual repo titles and not the selenium objects.
    full_text_title = [x.text for x in full_titles_element]
    # print out all the titles.
    print('Whole names that appear in site:')
    print(full_text_title, '\n')


    product_name_list = browser.find_elements_by_xpath("//span[@class='pymv4e']")
    # use list comprehension to get the actual repo titles and not the selenium objects.
    #upd_product_name_list=list(filter(None, product_name_list))

    upd_product_name_list=list(filter(None, product_name_list))
    product_name = [x.text for x in product_name_list]
    print('Product names:')
    print(product_name, '\n')
    filtered = [x for x in product_name if len(x.strip()) > 0]
    print(filtered)
    element_length=(len(filtered))
    print(element_length)
    print("\n")

    positions=[]
    for x in range(1, element_length+1):
        positions.append(x)
    print(positions)    
    print("\n")

    company_name_list = browser.find_elements_by_xpath("//div[@class='LbUacb']")
    # use list comprehension to get the actual repo titles and not the selenium objects.
    company = [x.text for x in company_name_list]
    # print out all the titles.
    print('Company Name:')
    print(company, '\n')

    urls=[]
    find_href = browser.find_elements_by_xpath("//a[@class='plantl pla-unit-single-clickable-target clickable-card']")
    for my_href in find_href:
        url_list=my_href.get_attribute("href")
        urls.append(url_list)
        #print(my_href.get_attribute("href"))
    print(urls)
    print("\n")
    result = zip(positions,filtered, urls, company)

    print(tuple(result))

예외 :

Warning (from warnings module):
  File "/Users/user_123/Documents/PLA/selenium_chrome_with_beautiful_soup.py", line 16
    browser = webdriver.Chrome(executable_path='/users/user_123/downloads/chrome_driver/chromedriver', chrome_options=option)
DeprecationWarning: use options instead of chrome_options

Database connected...
Fetched DB values
'https://www.google.com/search?q=vitamin+b12'


Traceback (most recent call last):
  File "/Users/user_123/Documents/PLA/selenium_chrome_with_beautiful_soup.py", line 49, in <module>
    browser.get(passed_url)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
  (Session info: chrome=79.0.3945.130)
Jortega

'따옴표와 문자열의 시작과 끝을 전달 합니다. 아래를 참조하여 문자열을 잘라 내고 새 변수를 할당했습니다 new_url.

대답 :

new_url = passed_url[1:len(passed_url)-1]
browser.get(new_url)

예:

a = "'https://www.google.com/search?q=vitamin+b12'"
b = a[1:len(a)-1]
print(a)
print(b)

아래 수정 된 코드 :


from bs4 import BeautifulSoup
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException
import psycopg2
import os
import glob
import datetime

option = webdriver.ChromeOptions()
option.add_argument(" — incognito")
#browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver/', chrome_options=option)
browser = webdriver.Chrome(executable_path='/users/user_123/downloads/chrome_driver/chromedriver', chrome_options=option)
try:
#Database connection string
 DSN = "dbname='postgres' user='postgres' host='localhost' password='postgres' port='5432'"
 #DWH table to which data is ported
 TABLE_NAME = 'staging.search_url'
 #Connecting DB..
 conn = psycopg2.connect(DSN)
 print("Database connected...")
 conn.set_client_encoding('latin-1')
 cur = conn.cursor()
 cur.execute("SET datestyle='German'")
except (Exception, psycopg2.Error) as error:
 print('database connection failed')
 quit()



search_url_fetch="""select url_to_be_searched from staging.search_url"""
psql_cursor = conn.cursor()
psql_cursor.execute(search_url_fetch)
serach_url_list = psql_cursor.fetchall()
print('Fetched DB values')
for row in serach_url_list:
    passed_url=''
    passed_url=str(row)
    passed_url=passed_url.replace(',)','')
    passed_url=passed_url.replace('(','')
    new_url = passed_url[1:len(passed_url)-1]
    print(passed_url)
    print("\n")

    #browser.get('https://www.google.com/search?q=vitamin+b12')
    browser.get(new_url)
    full_titles_element = browser.find_elements_by_xpath("//div[@class='mnr-c pla-unit']")
    # use list comprehension to get the actual repo titles and not the selenium objects.
    full_text_title = [x.text for x in full_titles_element]
    # print out all the titles.
    print('Whole names that appear in site:')
    print(full_text_title, '\n')


    product_name_list = browser.find_elements_by_xpath("//span[@class='pymv4e']")
    # use list comprehension to get the actual repo titles and not the selenium objects.
    #upd_product_name_list=list(filter(None, product_name_list))

    upd_product_name_list=list(filter(None, product_name_list))
    product_name = [x.text for x in product_name_list]
    print('Product names:')
    print(product_name, '\n')
    filtered = [x for x in product_name if len(x.strip()) > 0]
    print(filtered)
    element_length=(len(filtered))
    print(element_length)
    print("\n")

    positions=[]
    for x in range(1, element_length+1):
        positions.append(x)
    print(positions)    
    print("\n")

    company_name_list = browser.find_elements_by_xpath("//div[@class='LbUacb']")
    # use list comprehension to get the actual repo titles and not the selenium objects.
    company = [x.text for x in company_name_list]
    # print out all the titles.
    print('Company Name:')
    print(company, '\n')

    urls=[]
    find_href = browser.find_elements_by_xpath("//a[@class='plantl pla-unit-single-clickable-target clickable-card']")
    for my_href in find_href:
        url_list=my_href.get_attribute("href")
        urls.append(url_list)
        #print(my_href.get_attribute("href"))
    print(urls)
    print("\n")
    result = zip(positions,filtered, urls, company)

    print(tuple(result))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL 파일을 새 MariaDB 데이터베이스로 가져 오는 동안 오류가 발생했습니다.

분류에서Dev

sqllite에서 postgre django로 데이터베이스를 전환하는 동안 오류가 발생했습니다.

분류에서Dev

데이터베이스에서 이미지를로드하는 동안 오류가 발생했습니다.

분류에서Dev

입력 값을 다음 페이지로 전달하는 동안 오류가 발생했습니다.

분류에서Dev

Bash에서 배열을 함수 매개 변수로 전달하는 동안 오류가 발생했습니다.

분류에서Dev

Room 데이터베이스 라이브러리에서 Enum을 기본 키로 만드는 동안 오류가 발생했습니다.

분류에서Dev

텍스트 파일을 인수로 전달하는 동안 오류가 발생했습니다.

분류에서Dev

PL / pgSQL 저장 프로 시저에 배열을 전달하는 동안 오류가 발생했습니다.

분류에서Dev

Python에서 json을로드하는 동안 오류가 발생했습니다.

분류에서Dev

Access 데이터베이스로 데이터를 보내는 동안 오류가 발생했습니다.

분류에서Dev

부모에서 자식으로 소품을 전달하는 동안 오류가 발생했습니다. 유형이 잘못되었습니다.

분류에서Dev

laravel을 6.03에서 6.18로 업데이트하는 동안 오류가 발생했습니다.

분류에서Dev

데이터베이스 이름을 검색하는 동안 오류가 발생했습니다.

분류에서Dev

MySQL 데이터베이스에서 데이터를 선택하는 동안 오류가 발생했습니다.

분류에서Dev

스프링 부트 애플리케이션에서 로컬 MySQL 데이터베이스에 연결하는 동안 오류가 발생했습니다.

분류에서Dev

Pandas 데이터 프레임을 사용하여 CSV에서 테이블로 데이터를로드하는 동안 오류가 발생했습니다.

분류에서Dev

SQL 데이터베이스를 로컬에서 서버로 가져 오는 동안 오류가 발생했습니다.

분류에서Dev

nvarchar에서 숫자로 데이터를 캐스트하는 동안 오류가 발생했습니다.

분류에서Dev

C #의 데이터베이스에서 데이터를 읽는 동안 오류가 발생했습니다.

분류에서Dev

Spark SQL 데이터 프레임을 CSV로 내보내는 동안 오류가 발생했습니다.

분류에서Dev

매개 변수를 전달하는 동안 CSS를로드하는 중에 오류가 발생했습니다.

분류에서Dev

노드 js 앱을 통해 openshift에서 mysql 데이터베이스에 연결하는 동안 오류가 발생했습니다.

분류에서Dev

C #에서 이진 값을 double로 변환하는 동안 오류가 발생했습니다.

분류에서Dev

평일을 정수에서 실제 이름으로 변환하는 동안 오류가 발생했습니다.

분류에서Dev

JSON을 통해 ListView에서 이미지를로드하는 동안 오류가 발생했습니다.

분류에서Dev

phonegap 응용 프로그램에서 sqlite를 사용하여 내장 데이터베이스를 구현하는 동안 오류가 발생했습니다.

분류에서Dev

Swift : URL에서 비디오 데이터를 저장하는 동안 오류가 발생했습니다.

분류에서Dev

django에서 데이터베이스의 연락처 양식과 헤더 제목을 함께 렌더링하는 동안 오류가 발생했습니다.

분류에서Dev

데이터베이스에서 개체 배열을 렌더링하는 동안 오류가 발생했습니다.

Related 관련 기사

  1. 1

    SQL 파일을 새 MariaDB 데이터베이스로 가져 오는 동안 오류가 발생했습니다.

  2. 2

    sqllite에서 postgre django로 데이터베이스를 전환하는 동안 오류가 발생했습니다.

  3. 3

    데이터베이스에서 이미지를로드하는 동안 오류가 발생했습니다.

  4. 4

    입력 값을 다음 페이지로 전달하는 동안 오류가 발생했습니다.

  5. 5

    Bash에서 배열을 함수 매개 변수로 전달하는 동안 오류가 발생했습니다.

  6. 6

    Room 데이터베이스 라이브러리에서 Enum을 기본 키로 만드는 동안 오류가 발생했습니다.

  7. 7

    텍스트 파일을 인수로 전달하는 동안 오류가 발생했습니다.

  8. 8

    PL / pgSQL 저장 프로 시저에 배열을 전달하는 동안 오류가 발생했습니다.

  9. 9

    Python에서 json을로드하는 동안 오류가 발생했습니다.

  10. 10

    Access 데이터베이스로 데이터를 보내는 동안 오류가 발생했습니다.

  11. 11

    부모에서 자식으로 소품을 전달하는 동안 오류가 발생했습니다. 유형이 잘못되었습니다.

  12. 12

    laravel을 6.03에서 6.18로 업데이트하는 동안 오류가 발생했습니다.

  13. 13

    데이터베이스 이름을 검색하는 동안 오류가 발생했습니다.

  14. 14

    MySQL 데이터베이스에서 데이터를 선택하는 동안 오류가 발생했습니다.

  15. 15

    스프링 부트 애플리케이션에서 로컬 MySQL 데이터베이스에 연결하는 동안 오류가 발생했습니다.

  16. 16

    Pandas 데이터 프레임을 사용하여 CSV에서 테이블로 데이터를로드하는 동안 오류가 발생했습니다.

  17. 17

    SQL 데이터베이스를 로컬에서 서버로 가져 오는 동안 오류가 발생했습니다.

  18. 18

    nvarchar에서 숫자로 데이터를 캐스트하는 동안 오류가 발생했습니다.

  19. 19

    C #의 데이터베이스에서 데이터를 읽는 동안 오류가 발생했습니다.

  20. 20

    Spark SQL 데이터 프레임을 CSV로 내보내는 동안 오류가 발생했습니다.

  21. 21

    매개 변수를 전달하는 동안 CSS를로드하는 중에 오류가 발생했습니다.

  22. 22

    노드 js 앱을 통해 openshift에서 mysql 데이터베이스에 연결하는 동안 오류가 발생했습니다.

  23. 23

    C #에서 이진 값을 double로 변환하는 동안 오류가 발생했습니다.

  24. 24

    평일을 정수에서 실제 이름으로 변환하는 동안 오류가 발생했습니다.

  25. 25

    JSON을 통해 ListView에서 이미지를로드하는 동안 오류가 발생했습니다.

  26. 26

    phonegap 응용 프로그램에서 sqlite를 사용하여 내장 데이터베이스를 구현하는 동안 오류가 발생했습니다.

  27. 27

    Swift : URL에서 비디오 데이터를 저장하는 동안 오류가 발생했습니다.

  28. 28

    django에서 데이터베이스의 연락처 양식과 헤더 제목을 함께 렌더링하는 동안 오류가 발생했습니다.

  29. 29

    데이터베이스에서 개체 배열을 렌더링하는 동안 오류가 발생했습니다.

뜨겁다태그

보관