2017-09-20 3 views
1

Hallo ich bin neu zu beiden Python und Web Scraping folgenden ist mein Skript, um die URLs von der Website zu bekommen, aber ich steckte dazwischen Ich kann nicht die URLs aus der Klasse Tag, wenn ich die Website überprüfen kann ich finden Sie in der URL, aber in meinem Skript zeigt es als Javascript-This is the link jede Hilfe, bitte dank im VorausPython BeautifulSoup Web Scraping

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

Welche URLs speziell? Können Sie ein Beispiel geben, was Sie brauchen – chad

+0

Ich brauche die Produkt-URLs, die in der Website vorhanden ist, wie es ein Produkt gibt Automatisierung und Motorsteuerung Ich brauche die URLs aller Produkte auf dieser Seite – venkat

Antwort

0

Sie sollten find_all Klasse mit cimm_categoryItemBlock statt clearAfter denn das ist die Klasse ist der Name der li enthalten die Produkte Verbindungen

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

Vielen Dank Tschad. – venkat

+0

Bitte markieren Sie dies als Antwort, wenn es Ihr Problem gelöst hat. Vielen Dank! – chad

+0

Ich habe das Ergebnis mit Ihrem Code erhalten. Können Sie mir sagen, warum mein Code mit dieser Codezeile "chips = soup.find (class _ =" clearAfter ") falsch gelaufen ist. Find_all ('li') für i in chips: potato = ia [" href "] print (potato) " – venkat

0

Sie müssen nur eine weitere Ebene tief gehen. Versuchen Sie folgendes:

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

Halten Sie einfach das Hinzufügen auf „findnext“ Befehle genau wie oben auf die ‚etwas‘ Variable (den Klassennamen unter der Annahme ist für jeden Link), und Sie werden auf die Links.

Erinnern Sie sich: Beautifulsoup (und HTML) kann viele Zweige haben. Wenn Sie eine Instanz von Beautifulsoup erstellen, lautet die gängige Sprache, dass Sie einen neuen "Baum" erstellen. Also, wenn alles andere fehlschlägt? Erstellen Sie einfach eine andere Instanz und versuchen Sie einen anderen Zweig/eine andere Art (Sie werden das hier wahrscheinlich nicht brauchen) und Sie werden golden sein. HTML kann sehr eingebettet werden.

Sonst könnten Sie Selen verwenden. Super einfach:

Verwenden Sie einfach den Selenium-Befehl, um alle Klassen auf einer Seite nach Namen zu sammeln (in Ihrem Fall clearAfter), iterieren Sie darüber, fügen Sie eine Liste hinzu und greifen Sie über die Methode "get_attribute" auf die hrefs. Hier ist ein Beispiel, wie ich Selen dafür verwendet habe.

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')) 

Ich hoffe, ich half.

+0

Danke, Aaron Brandhagen aber die vorherige Antwort behob das Problem – venkat

+0

Noch besser! Ich bin froh, dass es gelöst wurde. –