循环这种情况的最佳方法?

时间:2018-03-29 19:40:33

标签: python beautifulsoup

我有一个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)

2 个答案:

答案 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找到的代码的文本输出,以完成更具体的任务,那么这是合理的。