python - 无法将字符串和列表从一个函数返回到另一个函数

标签 python python-3.x web-scraping

我用 python 创建了一个脚本,用于从其登陆页面解析不同机构的网站地址,并从其内部页面解析位置地址。我无法理解的是如何同时返回 stringlist 以便它们在另一个函数中重用。更清楚地说:我希望从 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/

相关文章:

javascript - 如何使用 Python 从包含 JavaScript 的 <a> 标签获取 href?

python - 如何将一个序列中的所有数字相乘(python)

带有额外字符的python 3打印

python - 如何在 Numpy 中屏蔽记录数组的元素?

Python 索引错误处理

python-2.7 - 高效读写大型文件

python - Numpy Argwhere 效率低下

python - 将枚举成员序列化为 JSON

python-3.x - 如何获取机器人头像链接

python - Scrapy只提取一部分url