Ich lerne Text aus dem Internet zu kratzen. Ive geschrieben, um die folgende FunktionPython übergeben Argument mit Zitat
from bs4 import BeautifulSoup
import requests
def get_url(source_url):
r = requests.get(source_url)
data = r.text
#extract HTML for parsing
soup = BeautifulSoup(data, 'html.parser')
#get H3 tags with class ...
h3list = soup.findAll("h3", { "class" : "entry-title td-module-title" })
#create data structure to store links in
ulist = []
#pull links from each article heading
for href in h3list:
ulist.append(href.a['href'])
return ulist
ich dies aus einer separaten Datei nenne ...
from print1 import get_url
ulist = get_url("http://www.startupsmart.com.au/")
print(ulist[3])
Das Problem ist, dass die CSS-Selektor ich verwende ist ziemlich einzigartig auf der Seite, die ich Parsen bin. Die Funktion ist also etwas "spröde". Ich möchte den CSS-Selektor als Argument an die Funktion
passieren Wenn ich einen Parameter der Funktionsdefinition hinzufügen
def get_url(source_url, css_tag):
und versuchen "h3", { "class" : "entry-title td-module-title" }
passieren es spazzes aus
TypeError: get_url() takes exactly 1 argument (2 given)
Ich habe versucht, alle Zitate zu entkommen, aber es funktioniert immer noch nicht.
Ich würde wirklich etwas Hilfe zu schätzen wissen. Ich kann keine vorherige Antwort auf diese Frage finden.
Sind Sie leistet Ihnen definierten 'def GET_URL (SOURCE_URL, css_tag):' richtig und danach wieder importiert die geänderte Funktion tun? Es sieht so aus, als ob Ihre Funktion defination nicht in der Datei reflektiert wird, in der Sie 'get_url()' –
aufrufen. Ihr Fehler betrifft nicht die Anführungszeichen, sondern die Funktion 'get_url()', die, wie gesagt, nur (genau) eins braucht Streit. – maze88
Ich denke, dieses Problem, das Sie identifiziert haben, ist korrekt. Ich musste meinen Python neu starten, um das zweite Argument zu erkennen, nachdem ich es hinzugefügt hatte. –