循环 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) ]
我正在使用 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) ]