我有一个div
的列表,我正试图在每个中获取某些信息。 div
类是一样的,所以我不确定我会怎么做。
我尝试了for
循环,但一直遇到各种错误
获取div列表的代码:
import requests
from bs4 import BeautifulSoup
import re
url = 'https://sneakernews.com/release-dates/'
response = requests.get(url)
data = response.text
soup = BeautifulSoup(data, "lxml")
soup1 = soup.find("div", {'class': 'popular-releases-block'})
soup1 = str(soup1.find("div", {'class': 'row'}))
soup1 = soup1.split('</div>')
print(soup1)
代码我想循环soup1
列表中的每个项目:
linkinfo = soup1.find('a')['href']
date = str(soup1.find('span'))
name = soup1.find('a')
non_decimal = re.compile(r'[^\d.]+')
date = non_decimal.sub('', date)
name = str(name)
name = re.sub('</a>', '', name)
link, name = name.split('>')
link = re.sub('<a href="', '', link)
link = re.sub('"', '', link)
name = name.split(' ')
name = str(name[-1])
date = str(date)
link = str(link)
print(link)
print(name)
print(date)
答案 0 :(得分:0)
我的理解是你要为列表中的每个项循环代码。 一个例子:
my_list = ["John", "Fred", "Tom"]
for name in my_list:
print(name)
这将循环显示my_list
中的每个名称并打印出每个项目(在此处称为name
)。你可以用你的代码做类似的事情:
for item in soup1:
# perform some action
答案 1 :(得分:0)
根据您在上面发布的网址,我想您会对以下内容感兴趣:
import requests
from bs4 import BeautifulSoup
url = requests.get('https://sneakernews.com/release-dates/').text
soup = BeautifulSoup(url, 'html.parser')
tags = soup.find_all('div', {'class': 'col lg-2 sm-3 popular-releases-box'})
for tag in tags:
link = tag.find('a').get('href')
print(link)
print(tag.text)
#Anything else you want to do
如果您使用的是BeautifulSoup
库,那么您不需要regex
来尝试解析HTML标记。相反,请使用BeautifulSoup
附带的方便方法。如果您希望将regex
应用于通过BeautifulSoup
找到的代码的文本输出,以完成更具体的任务,那么这是合理的。