如何仅从Python3中的列表中检索链接? [初学者]

时间:2019-02-18 15:47:28

标签: python-3.x beautifulsoup

我在python3上有这样的列表:

https://textuploader.com/15dra

从这个文件中,我想创建一个新列表,该列表仅使用另一个列表中的网址,这些网址由逗号分隔并包含在双引号(“)中,并且如果可能的话,还过滤所有包含” i.redd.it“的网址

如果有帮助,请参见以下代码:

from bs4 import BeautifulSoup
import requests
import re
import urllib.request
import urllib3

http = urllib3.PoolManager()

url = "https://reddit.com/r/me_irl"
response = http.request('GET', url)
soup = BeautifulSoup(response.data, "lxml")
tags = soup.find_all('a')
hrefs = []
for t in tags:
    hrefs.append(t)

print(hrefs)

1 个答案:

答案 0 :(得分:0)

您可以进行列表理解。我还将包括以下行:

tags = soup.find_all('a', href=True)

因为您只需要带有网址的标签

from bs4 import BeautifulSoup
import requests
import re
import urllib.request
import urllib3

http = urllib3.PoolManager()

url = "https://reddit.com/r/me_irl"
response = http.request('GET', url)
soup = BeautifulSoup(response.data, "lxml")
tags = soup.find_all('a', href=True)

hrefs = [ ele['href'] for ele in tags if 'i.redd.it' in ele['href']]

但是,这将返回一个空列表,因为其中没有包含'i.redd.it'

的href

但是,如果您需要这些URL,则可以摆脱if语句,或者根据需要更改它:

 hrefs = [ ele['href'] for ele in tags ]