2017-07-25 7 views
1

Ich bekomme einen Fehler, wenn ich versuche, alles hinter dem "?" in einer Reihe von geschabt Links:Alles nach "?" Entfernen Python

Code:

from selenium import webdriver 
import pandas as pd 
import time 
from datetime import datetime 
from collections import OrderedDict 
import re 

browser = webdriver.Firefox() 
browser.get('https://www.kickstarter.com/discover?ref=nav') 
categories = browser.find_elements_by_class_name('category-container') 

category_links = [] 
for category_link in categories: 
    category_links.append((str('https://www.kickstarter.com'), 
        category_link.find_element_by_class_name('bg-white').get_attribute('href'))) 
    print(category_links) 
    for i in category_link: 
    category_links2 = re.sub('?$', '', category_links) 
    print(category_links2) 

Fehler:

TypeError: 'FirefoxWebElement' object is not iterable

+0

Welche Zeile wirft den Fehler? – SeeDerekEngineer

Antwort

3
  1. Sie über category_links laufen müssen. i ist die Schleifenvariable

  2. Sie benötigen re.sub über i, nicht category_links anzuwenden, weil dieser eine Liste, und re.sub wird auf Listen nicht.

  3. Für eine einfache Aufgabe wie diese, empfehle ich Splitting auf ? mit str.split:


for i in category_links: 
    category_links2 = i[1].split('?')[-1] 
    print(category_links2) 
+0

@nemja Zeig mir, wie das Tupel aussieht. –

+0

[('https://www.kickstarter.com', 'https://www.kickstarter.com/discover/categories/art?ref=discover_index'), ('https://www.kickstarter.com') , 'https://www.kickstarter.com/discover/categories/comics?ref=discover_index') usw. – nemja

+0

@nemja Überprüfen Sie meine Bearbeitung _now_. –

2

Warum nicht nur, dass ... wenn url Ihr Link ist

url.split('?')[0] 
+0

Erhalte den folgenden Fehler; AttributeError: 'list' -Objekt hat kein Attribut 'split' – nemja

+0

In diesem Fall einfach so etwas tun, url [0] .split ('?') [0] –

Verwandte Themen