2017-09-20 4 views
1

안녕하세요 저는 파이썬과 웹 스크래핑에 익숙하지 않습니다. 웹 사이트에서 URL을 가져 오는 스크립트입니다.하지만 웹 사이트를 검사 할 때 클래스 태그에서 URL을 가져올 수 없습니다. URL을 볼 수 있지만 내 스크립트에서, 자바 스크립트 This is the link 도움으로 사전에 감사하시기 바랍니다 보여줍니다Python BeautifulSoup 웹 스크래핑

from bs4 import BeautifulSoup 
import urllib.request 
import pandas as pd 
url = "https://www.northcoastelectric.com/Products" 
html = urllib.request.urlopen(url).read() 
soup = BeautifulSoup(html) 
something = soup.find(class_="clearAfter") 
print(chips) 
for i in something: 
    new_url = i.a["href"] 
    print(new_url)` 
+0

구체적으로 어떤 URL이 있습니까? 당신이 필요로하는 것을 줄 수 있습니까? – chad

+0

제품이있는 것처럼 웹 사이트에있는 제품 URL이 필요합니다 자동화 및 모터 제어 해당 페이지에있는 모든 제품의 URL이 필요합니다 – venkat

답변

0

당신이해야 cimm_categoryItemBlock 대신 clearAfterfind_all 클래스 그 제품을 '이 포함 된 li의 클래스 이름이기 때문에 링크

something = soup.find_all(class_="cimm_categoryItemBlock") 
for i in something: 
    new_url = i.a.get("href") 
    print(new_url) 
+0

감사합니다. – venkat

+0

문제가 해결되면 답변으로 표시하십시오. 감사! – chad

+0

코드를 사용하여 결과를 얻었습니다. find_all ('li')potato = ia [ "href"] 칩에 들어있는 코드에 대해 칩에 대해 코드가 잘못되어있는 이유를 설명 할 수 있습니까? print (감자) " – venkat

0

다른 레이어로 깊숙이 갈 필요가 있습니다. 이 시도 :

something = soup.find(class_="clearAfter").findNext("clearAfter") 

그냥 "findNext"에 계속 추가 정확히 변수 '뭔가'에 위와 같이 명령 (클래스 이름을 가정하고 각 링크에 대한 동일) 당신은 링크를 얻을 것이다.

기억하십시오 : Beautifulsoup (및 HTML)에는 많은 가지가있을 수 있습니다. Beautifulsoup의 인스턴스를 만들 때, 일반적인 표현은 당신이 새로운 "트리"를 만들고 있다는 것입니다. 그래서, 다른 모든 것이 실패한다면? 그냥 다른 인스턴스를 만들고 다른 지점/다른 방법을 시도해보십시오 (아마도 여기서는 필요하지 않을 것입니다). 그러면 황금이됩니다. HTML은 매우 내장 될 수 있습니다.

그렇지 않으면 셀렌을 사용할 수 있습니다. 슈퍼 쉽게 :

그냥 이름 (귀하의 경우 clearAfter)로 페이지의 모든 클래스를 수집하고, 그것을 반복하고, 목록에 추가하고 "get_attribute"메소드를 통해 href를 가져 오는 selenium 명령을 사용하십시오. 다음은 셀레늄을 사용하여이를 수행하는 방법의 예입니다.

def get_results(self): 
     cv = [] 
     bbb = self.driver.find_elements_by_class_name('user-name') ## self.driver is my Chromedriver webdriver used to manipulate the browser. Let me know if you have Qs! 

    for plink in bbb: 
      cv.append(plink.find_element_by_css_selector(
           'a').get_attribute('href')) 

희망이 있습니다.

+0

Aaron Brandhagen이 고맙습니다 만 이전 대답은 – venkat

+0

입니다. 다행히 해결되었습니다. –

관련 문제