循环 BeautifulSoup

Looping in BeautifulSoup

我正在使用 python 循环知道 url 中的“键”列表并提取为输出。为此,我定义了一个 get_urls(key) 函数,然后通过 key 循环。你可以在这里看到我的示例代码:

import urllib3
import requests
urllib3.disable_warnings()
from bs4 import BeautifulSoup
import pandas as pd

def get_urls(key):
    url = f'https://aurl.com/{key}#ltr-{key}'
    r = requests.get(url,proxies=proxies, verify=False)
    soup = BeautifulSoup(r.content, "html.parser")

    for a in soup.find_all('a', href=True):
        z=print(a['href'])
    return z

key = ['C','B']

urllist = []
for key in key:
    urllist.append(get_urls(key))

dflinks = pd.DataFrame(urllist) 
path = 'D://mycsv.csv'
dflinks.to_csv(path,index=False)

代码的第一部分似乎完成了工作,因为我在 out 中看到了所需的 url。但是,我在将这些 url 保存到 csv 时一定出错了,因为当我打开所需的文件时,结果是空的。

我知道我一定犯了一个非常基本的错误,我正在学习 python 非常感谢您的反馈。我相信你会很快发现它:)

编辑:其他不起作用:

另一种不起作用的策略是将代码上方的行替换为:

linklist = []
    for a in soup.find_all('a', href=True):
        z=linklist.append(a['href'])
    return z

您没有返回您想要的:

z = linklist.append(a['href'])

.append()returnsNone。它是一个 void 函数,您调用它来在列表中追加一个值。 此外,您将返回 z。尝试返回您创建的 linklist

linklist = []
for a in soup.find_all('a', href=True):
    linklist.append(a['href'])
return linklist

您也可以尝试更像 Python 的代码,但这是可选的:

return [ a['href'] for a in soup.find_all('a', href=True) ]