我用 python 创建了一个脚本,用于从其登陆页面解析不同机构的网站地址
,并从其内部页面解析位置地址
。我无法理解的是如何同时返回 string
和 list
以便它们在另一个函数中重用。更清楚地说:我希望从 collect_links()
函数返回网站地址
和链接列表
,并在 get_info( )
函数。我当前的方法会引发错误 - ValueError: 没有足够的值来解包(预期 2,得到 1)
。
这是我迄今为止的尝试:
import re
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def collect_links(link):
res = requests.get(link)
soup = BeautifulSoup(res.text, "lxml")
website = [soup.select_one("p.company-profile-website > a").get("href")]
items = [urljoin(url,item.get("href")) for item in soup.select("[id^='company-'] .search-companies-result-info h2 > a")]
return website,items
def get_info(website,link):
res = requests.get(link)
soup = BeautifulSoup(res.text, "lxml")
address = soup.select_one("p.footer-right").get_text(strip=True)
print(website,address)
if __name__ == '__main__':
url = "https://www.cv-library.co.uk/companies/agencies/A"
for item,link in collect_links(url):
get_info(item,link)
如何将字符串和列表从一个函数返回到另一个函数?
PS,我想坚持我已经尝试过的设计。
最佳答案
您的网站
是一个包含单个元素字符串的列表
,而不是您将其括在[]
文字中的字符串。您需要删除 []
以使其成为字符串,因为没有必要将其设为列表。
这样做之后,您可以获得返回值,并迭代链接,例如:
if __name__ == '__main__':
url = "https://www.cv-library.co.uk/companies/agencies/A"
website, links = collect_links(url)
for link in links:
get_info(website, link)
关于python - 无法将字符串和列表从一个函数返回到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375898/