2017-10-08 224 views
0

我需要變成一個功能蟒蛇功能,beautifulsoup刮

#scrape 

for parsed_link in soup.findAll('a', {'target':'Map'}): 
    links.extend(parsed_link.contents) 

這在一個名爲「鏈接」列表返回結果。它可以正常工作,但我的解決方案不起作用。這是我的:

def scrape(): 
    parsed_link = soup.findAll('a', {'target':'Map'}) 
    links.extend(parsed_link.contents) 

我哪裏錯了?所有幫助讚賞。

的完整性,這裏是代碼的其餘部分:

from selenium import webdriver 
from bs4 import BeautifulSoup as bs 

path_to_chromedriver = r'C:\Users\Kane\Desktop\chromedriver_win32\chromedriver.exe' 
browser = webdriver.Chrome(executable_path = path_to_chromedriver) 
url = 'http://www.fieldmycology.net/FRDBI/FRDBIrecord.asp?intGBNum=1511' 
browser.get(url) 

html = browser.page_source 
soup = bs(html, 'html.parser') 
links = [] 

for parsed_link in soup.findAll('a', {'target':'Map'}): 
    links.extend(parsed_link.contents) 

回答

0

這是我會怎麼把它變成一個功能:

def scrape(soup): 
    links = [] 

    for parsed_link in soup.findAll('a', {'target':'Map'}): 
     links.append(parsed_link.contents) 

    return links 

... 


soup = ... 
links = scrape(soup) 

第二個例子不具備for循環。你可能想要append的名單,而不是extend。這個函數soup作爲參數,然後運行你的第一個例子提供,links作爲返回值

+0

我會通過標籤和目標,以及,只爲靈活的代碼。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ你可以這樣做,我不只是爲了簡單 – Jerfov2

+0

在第二個更通用的解決方案中添加沒有任何問題:-) –