2016-09-13 3 views
0

driver.get 문과 동일한 링크를 지정하는 데 실수를하고 있다고 가정합니다. 나는 모든 링크를 잡을 때까지 페이지 내에서 반복해야하지만 어딘가에 엉망입니다.'NoneType'객체가 루프에서 반복 가능하지 않습니다.

import requests 
from bs4 import BeautifulSoup 
from selenium import webdriver 
import csv 

b = open('csv/homedepotfridges.csv', 'w', newline='') 
a = csv.writer(b,delimiter=',') 

driver = webdriver.PhantomJS() 
links = driver.get('https://www.homedepot.ca/en/home/categories/appliances/refrigerators-and-freezers/refrigerators.html') 

for link in links: 
    name = driver.find_element_by_class_name('product-name') 
    model = driver.find_element_by_class_name('product-model') 
    price = driver.find_element_by_class_name('product-display-price') 
    detail = driver.find_element_by_class_name('js-detail-link') 

    for x, y, z, q in zip(name, model, price, detail): 
     c= (x.text, y.text, z.text, q.get_attribute("href")) 
     print (x.text, y.text, z.text, q.get_attribute("href")) 
     a.writerow(c) 

b.close() 
+0

"utterable"? 분명히 오류는 "iterable"이라고 말하고 있습니까? – ShadowRanger

+0

감사합니다. 자동 고침 내가 그것을 바꾼 것 같아 – user6794561

답변

0

셀레늄 webdrivers가 get 방법에서 아무것도 반환하지 않으며, 사실에서 "링크에 링크"라인에서 " 'NoneType'개체를 반복 가능하지 않다 형식 오류"나는의 오류가 계속 get 메서드는 웹 페이지로드가 시작되기 전에 반환 할 수 있습니다. waiting for content에 대한 설명서를 참조하십시오.

읽고 해당 제품의 특정 속성을 쓰기 모든 제품의 목록을 페이지 로 이동 :

+0

이것을 단일 링크에 사용할 때 완벽하게 작동합니다. 페이지에서 여러 번 반복해야합니다. – user6794561

+0

나는 그것에 대해 무엇을 말해야할지 모르겠습니다. [selenium documentation] (http://docs.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver-api-commands-and-operations)은 웹 페이지가 반드시 완전히로드되거나 " get 메소드는 다양한 요소에 따라 다르며 [get 메소드가 값을 반환하지 않습니다.] (https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/remote/webdriver.py#L244). –

0

나는 당신이하려는 생각합니다.

그 다음 올바른 경우 : GET)는)

이 아무것도 반환 목록을하지 않기 때문에

1), driver.get (할당 할 필요가있는 페이지로 이동합니다. 링크 같은 = driver.find_elements_by_classname ('제품 세부 정보')

3) 다음 링크에서 링크를 사용하여 목록을 반복 :

및 제품 내 특정 부동산 찾기, 같은 : product_href = link.find_element_by_css_selector ('a'). get_attribute ('href')

그리고 굉장한 것을하십시오!

이 정보가 도움이됩니까?

관련 문제