python - 在 BeautifulSoup 中循环
问题描述
我正在使用python在一个知道的url中循环一个“键”列表并提取为输出。为此,我定义了一个get_urls(key)
函数,然后循环 trough 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 保存到 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()
返回None
。它是一个 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) ]
推荐阅读
- php - 在phpspreadsheet中合并和居中单元格
- c# - 使用其输入自动下载文件
- python - 如何使用 Pandas 样式器实现类似 Excel 的条件格式?
- html - 根据屏幕分辨率和屏幕大小调整 CSS
- pyspark - pyspark 如何记住内存中的某些内容,例如 mapreduce 中的类属性?
- woocommerce - WooCommerce Zapier 集成连接问题
- c# - 由于 NullReferenceException,汽车不会悬停
- python - django 休息框架。展开字段。属性错误
- spring - @CamelSpringTest 和 @CamelSpringBootTest 有什么区别?
- python - 如何使用列表(例如数据类)将 MultiIndex DataFrame 转换为对象?