2017-10-08 114 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

在第二个更通用的解决方案中添加没有任何问题:-) –