在这里,我正在创建一个名为 li 的列表,其中包含标签文本和名为 list2 的列表,其中包含 span 文本。我使用 zip 附加它。现在,我有一个名为 name 的第三个列表,它有 2 个值(最活跃者、增益者)。我想要 Mostactives,然后是列表中的前 10 个值,然后是增益器和接下来的 10 个值。示例输出如下所示。
from bs4 import BeautifulSoup
import urllib.request
import re
url = 'https://money.cnn.com/data/hotstocks/'
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html,'lxml')
allbody = soup.find('div',class_='cnnBody_Left wsodContent')
name = allbody.findAll('h3') #I am finding the header tags text
我的输出是:
Most Actives,Gainers
在这里,在下面我正在抓取所有标签文本并存储在名为 li 的列表中
contents=allbody.findAll('table',class_='wsod_dataTable wsod_dataTableBigAlt')
li=[]
for j in range(len(contents)):
for i in contents[j].findAll('a'):
title=i.text
title=title.split()
for j in title:
li.append(j) #I am scraping all text of <a> tags and storing it in list
仅此一项我的输出就是:
['AMD', 'BAC', 'GE', 'F', 'M', 'PFE', 'FCX', 'BMY', 'T', 'JWN', 'JWN', 'M', 'LB', 'GPS', 'SJM', 'CPRI', 'RL', 'BIIB', 'FCX', 'ADS', 'INTU', 'HES', 'STZ', 'COTY', 'TTWO', 'ABMD', 'SNPS', 'TSN', 'CCI', 'SBAC']
现在,我正在抓取所有 span 标签并将其存储在列表中,并附加 li 和 list2。
list2=[]
for i in range(len(contents)):
for j in contents[i].findAll('span'):
alpha=j.text
alphachar=re.sub('[^a-zA-Z]+', '', alpha)
alphabets=alphachar.split()
for item in alphabets:
if item!=[]:
list2.append(item)
for (a, b) in zip(li,list2):
print(a,b)
我的输出是:
AMD AdvancedMicroDevicesInc
BAC BankofAmericaCorp
GE GeneralElectricCo
F FordMotorCo
M MacysInc
PFE PfizerInc
FCX FreeportMcMoRanInc
BMY BristolMyersSquibbCo
T ATTInc
JWN NordstromInc
JWN NordstromInc
M MacysInc
LB LBrandsInc
GPS GapInc
SJM JMSmuckerCo
CPRI CapriHoldingsLtd
RL RalphLaurenCorp
BIIB BiogenInc
FCX FreeportMcMoRanInc
ADS AllianceDataSystemsCorp
从这里,我希望输出为:
- Most actives
AMD AdvancedMicroDevicesInc
BAC BankofAmericaCorp
GE GeneralElectricCo
F FordMotorCo
M MacysInc
PFE PfizerInc
FCX FreeportMcMoRanInc
BMY BristolMyersSquibbCo
T ATTInc
JWN NordstromInc
- Gainers
JWN NordstromInc
M MacysInc
LB LBrandsInc
GPS GapInc
SJM JMSmuckerCo
CPRI CapriHoldingsLtd
RL RalphLaurenCorp
BIIB BiogenInc
FCX FreeportMcMoRanInc
ADS AllianceDataSystemsCorp