Python 尝试使用for循环和append列表将图像URL添加到Web垃圾处理列表中
下面的代码产生了一个逻辑错误。我试图简单地刮取图像URL并将其放入列表中,然后返回列表(其中应包含多个图像URL) 代码: 在使用变量Python 尝试使用for循环和append列表将图像URL添加到Web垃圾处理列表中,python,list,web-scraping,Python,List,Web Scraping,下面的代码产生了一个逻辑错误。我试图简单地刮取图像URL并将其放入列表中,然后返回列表(其中应包含多个图像URL) 代码: 在使用变量images(返回函数结果)呈现home.html页面时,我得到 我试过: for image in images: images=image['src']+'\n') return images 但这只返回第一个图像URL 有人能指出错误吗 def imagescrape(): final_images=[]
images
(返回函数结果)呈现home.html页面时,我得到
我试过:
for image in images:
images=image['src']+'\n')
return images
但这只返回第一个图像URL
有人能指出错误吗
def imagescrape():
final_images=[]
html = urlopen('https://en.wikipedia.org/wiki/Prince_Harry,_Duke_of_Sussex')
bs = BeautifulSoup(html, 'html.parser')
images = bs.find_all('img', {'src':re.compile('.jpg')})
for image in images:
final_images.append(image['src']+'\n')
return final_images
我得到无
这是因为:
列表的append
方法返回None
,因此将其分配给images
会将其设置为None
(然而,让我惊讶的是,这不会给出错误,因为image
不是列表,甚至没有append
方法)
您似乎对所选择的变量名以及遍历列表和附加到列表的工作方式感到有点困惑 应该有两个列表,您都将其命名为
images
:
bs.find_all的结果
def imagescrape():
# List 1 (TARGET):
result_images=[]
html = urlopen('https://en.wikipedia.org/wiki/Prince_Harry,_Duke_of_Sussex')
bs = BeautifulSoup(html, 'html.parser')
# List 2 (SOURCE):
images = bs.find_all('img', {'src':re.compile('.jpg')})
for image in images:
# ^^^^^^ SOURCE list
result_images.append(image['src']+'\n')
# ^^^^^^^^^^^^^ TARGET list
return result_images
如果你有一个模式
target_list = []
for item in source_list:
target_list.append(process(item))
您还可以将其转换为列表:
target_list = [process(item) for item in source_list]
在您的情况下,您可以按如下方式应用此代码,这使代码在我看来更加清晰:
def imagescrape():
html = urlopen('https://en.wikipedia.org/wiki/Prince_Harry,_Duke_of_Sussex')
bs = BeautifulSoup(html, 'html.parser')
images = bs.find_all('img', {'src':re.compile('.jpg')})
return [image['src']+'\n' for image in images]
我得到无
这是因为:
列表的append
方法返回None
,因此将其分配给images
会将其设置为None
(然而,让我惊讶的是,这不会给出错误,因为image
不是列表,甚至没有append
方法)
您似乎对所选择的变量名以及遍历列表和附加到列表的工作方式感到有点困惑 应该有两个列表,您都将其命名为
images
:
bs.find_all的结果
def imagescrape():
# List 1 (TARGET):
result_images=[]
html = urlopen('https://en.wikipedia.org/wiki/Prince_Harry,_Duke_of_Sussex')
bs = BeautifulSoup(html, 'html.parser')
# List 2 (SOURCE):
images = bs.find_all('img', {'src':re.compile('.jpg')})
for image in images:
# ^^^^^^ SOURCE list
result_images.append(image['src']+'\n')
# ^^^^^^^^^^^^^ TARGET list
return result_images
如果你有一个模式
target_list = []
for item in source_list:
target_list.append(process(item))
您还可以将其转换为列表:
target_list = [process(item) for item in source_list]
在您的情况下,您可以按如下方式应用此代码,这使代码在我看来更加清晰:
def imagescrape():
html = urlopen('https://en.wikipedia.org/wiki/Prince_Harry,_Duke_of_Sussex')
bs = BeautifulSoup(html, 'html.parser')
images = bs.find_all('img', {'src':re.compile('.jpg')})
return [image['src']+'\n' for image in images]