我正在学习从网络中抓取文本。香港专业教育学院写了下面的功能python传递包含引号的参数
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
我从一个单独的文件调用此...
from print1 import get_url
ulist = get_url("http://www.startupsmart.com.au/")
print(ulist[3])
的问题是,我使用的CSS选择器是相当独特的,以我解析该网站。所以这个功能有点“脆弱”。我想如果我添加参数传递给函数的定义
def get_url(source_url, css_tag):
的CSS选择器作为参数传递给函数
,并试图通过"h3", { "class" : "entry-title td-module-title" }
它spazzes出
TypeError: get_url() takes exactly 1 argument (2 given)
我试图转义所有引号,但它仍然无法正常工作。
我真的很感谢一些帮助。我无法找到这个先前的答案。
你sured你定义'高清GET_URL(SOURCE_URL,css_tag):'正确,这样做,再次导入更改的功能之后?看起来你的函数定义变化没有反映在你调用'get_url()'的文件中' –
你的错误不是关于引号,而是关于'get_url()'函数,如上所述,它只需要(正好)一个论据。 – maze88
我认为你确定的这个问题是正确的。我需要重新启动python,以便在添加它之后识别第二个参数。 –