我想找到页面上的所有链接,此代码仅获取以http://
开头的链接,但是大多数链接是https://
我在下面编辑您的代码以找到两者?
for link in soup.find_all('a',attrs={'href':re.compile("^http://")}):
import requests,bs4,re
res=requests.get('https://www.nytimes.com/2018/11/21/nyregion/president-trump-immigration-law-firms.html?action=click&module=Top%20Stories&pgtype=Homepage')
soup=bs4.BeautifulSoup(res.text,'html.parser')
x=[]
y=[]
z=[]
for link in soup.find_all('a',attrs={'href':re.compile("^http://")}):
print(link.get('href'))
x=link.get('href')
我知道我可以简单地获取所有链接,但是我想同时将http://
和https://
放在一个find_all
中
for i in soup.select('a'):
print(i.get('href'))
答案 0 :(得分:0)
您要将链接分为http和https吗?使用.startswith()
或re.match()
http = []
https = []
for link in soup.find_all('a'):
url = link.get('href')
if url.startswith('http://'): # or: if re.match("^http://", url)
http.append(url)
else:
# should be https://
https.append(url)
print(https)
print(http)
答案 1 :(得分:0)
您可以使用此正则表达式来匹配http
或https
:
^(http|https)://.*
正则表达式(a|b)
的意思是:匹配模式a
或b
。