2016-11-08 5 views
0

Я учусь печатать текст из Интернета. Ive написал следующую функциюПроводящий аргумент 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 я использую довольно уникальный для сайта я разбор. Таким образом, функция немного «хрупкая». Я хочу передать селектор CSS в качестве аргумента функции

Если добавить параметр в определении функции

def get_url(source_url, css_tag): 

и попытаться пройти "h3", { "class" : "entry-title td-module-title" }

это spazzes из

TypeError: get_url() takes exactly 1 argument (2 given)

Я попытался убежать от всех кавычек, но он все еще не работает.

Я очень благодарен за помощь. Я не могу найти предыдущий ответ на этот вопрос.

+0

Вы ренные вы определили 'четкости get_url (SOURCE_URL, css_tag):' правильно и после того, как делать это снова импортирован измененную функцию? Похоже, что изменение функции не было отражено в файле, где вы вызываете 'get_url()' –

+0

Ваша ошибка не о кавычках, а о функции 'get_url()', которая, как указано, принимает только (точно) один аргумент. – maze88

+0

Я думаю, что эта проблема, которую вы определили, верна. Мне нужно было перезапустить мой python, чтобы он узнал второй аргумент после того, как я добавил его. –

ответ

0

Вот версия, которая работает:

from bs4 import BeautifulSoup 
import requests 

def get_url(source_url, tag_name, attrs): 
    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(tag_name, attrs) 
    # 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 

ulist = get_url("http://www.startupsmart.com.au/", "h3", {"class": "entry-title td-module-title"}) 

print(ulist[3]) 
+0

Это работает. Я действительно не понимаю, почему, но спасибо –

+0

@AxleMax, что вы не понимаете? Кажется, вы думаете, что вы можете комбинировать несколько значений в одном, помещая кавычки, но это совсем не работает. Поэтому я просто передал отдельные значения. –

Смежные вопросы