我想显示第一个列表中的第一个单词并显示第二个列表中的 10 个单词,依此类推-python。我尝试使用 range 和 zip。它仍然不起作用

2024-03-10

在这里,我正在创建一个名为 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

当我抓取元素时,我将代码更改为对元素进行分组,这样以后我就不必拆分 10 个元素。

findAll('table',...)给出三个元素(页面上三个表格),对于我创建的单独表格data仅保留该表的值 - 所以我对数据进行分组,以后就不必拆分它们。

为此,我还搜索表中的行,并在每一行中搜索符号和全名,以便我可以将它们放在一起data

from bs4 import BeautifulSoup
import urllib.request

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') 
names = allbody.find_all('h3')   #I am finding the header tags text
names = [x.text for x in names]
#print(names)

contents = allbody.find_all('table', class_='wsod_dataTable wsod_dataTableBigAlt')

tables = [] # keep three tables

for item in contents:
    data = [] # list for single table

    for tr in item.find_all('tr')[1:]: # find rows in table - skip row with headers `[1:]`
        a = tr.find('a')  # get only from first column
        a = a.text.strip()

        span = tr.find('span')  # get only from first column
        span = span.text.strip()

        data.append( (a, span) )

    tables.append(data)


for name, table in zip(names, tables):
    print('-', name)
    for a, span in table:
        print(a, span)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我想显示第一个列表中的第一个单词并显示第二个列表中的 10 个单词,依此类推-python。我尝试使用 range 和 zip。它仍然不起作用 的相关文章

随机推荐

  • 使用 applicationwillenterforeground 显示密码屏幕

    在 iOS4 之前 我的应用程序的初始视图控制器将检查 viewWillAppear 中的密码开 关设置变量 如果设置为打开 则显示一个模式密码屏幕 该屏幕将一直保留在那里 直到输入正确的密码或按下主页按钮 对于 iOS4 如果我的应用程序
  • 带参数的 DataTables ajax.reload()

    我正在使用数据表服务器端在 Angular2 项目中 我尝试在进行更改后重新加载表 并且我想通过 AJAX 将这些更改作为 POST 中的参数传递 问题是 DataTables 总是得到options来自初始化的对象 而不是更新版本新参数
  • 是否可以选择使用 Flash 10.2 光标,同时仍与 Flash 10.0 兼容?

    我有一个 Flash 应用程序需要 Flash 版本 10 0 才能运行 我想添加 Flash 10 2 中引入的本机鼠标光标 但我不想要求所有用户都升级 并且我不想编译我的应用程序的两个单独版本 有什么方法可以在运行时检测光标是否可用 然
  • 在 Flutter 中将字符串解析为小部件

    我想将以下字符串解析为其等效的 Flutter 小部件 String fetchedFromServer Container child Text Hello 我想从网络服务器接收布局并将它们解析为真正的小部件 我怎样才能在 Dart Fl
  • 如何根据用户区域设置设置数字和日期的格式?

    我需要一种根据用户的区域设置自动格式化日期和数字对象的方法 到目前为止 我一直在使用toLocaleString 日期函数 对于数字来说 toLocaleString 也是可用的 但是正如您在jsFiddle http jsfiddle n
  • SqlAlchemy:如果对象尚不存在,则创建对象?

    我是 SQLAlchemy 的新手 我目前有 ev model EnumerationValue key key level 2 code level 2 ev keyvalues key parent level 1 model Sess
  • 简单的Java计算器(需要小数帮助)[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 好的 这是我的简单 java 计算器 一切正常 我只需要允许小数的帮助 非常感谢帮助我的人 这是一个学校项目 所以我需要很快得到答案 imp
  • 安装旧版本的 Mono

    今天我的 Ubuntu 将 Mono 更新到了 4 2 1 102 它不会允许我绝对需要运行的某个程序 如何将其降级到 4 0 5 1 我努力了 sudo apt get install mono complete 4 0 5 1 那是行不
  • alt 属性可以用于输入类型按钮吗

    我想询问输入标签中的 alt 属性 正如我在许多网站上发现的那样 当我们输入图像类型时 会使用 alt 属性 1 可以用于输入型按钮吗
  • 如何使用最新版本的 R RDCOMClient 从 Outlook 发送邮件?

    当我使用最新版本的 R RDCOMClient 包发送 Outlook 电子邮件时 它显示错误 相同的代码 library RDCOMClient init com api OutApp lt COMCreate Outlook Appli
  • 通过spring AOP + Aspectj进行异常处理

    在我的项目中 我有一个域层 它基本上是 POJO 和一个位于域层之上的 Spring 控制器 服务层 我还有一个位于服务和域之间的 AOP 层 我的域层正在抛出业务异常 这些异常现在正在服务层中处理 但是我想更改它 以便从领域层抛出的异常将
  • Backbone.js 视图的合适粒度是多少?

    我正在采用 Backbone js 来渲染一个小角落现有的大型网络应用程序 http www esvonline org 如果进展顺利 我可以看到 Backbone js 不断发展以涵盖整个应用程序 为有机增长的应用程序提供一些急需的结构
  • 了解Scheme函数

    我们的编程语言练习考试中给出了以下问题 我很难理解它是如何工作的 有人能告诉我代码流程是什么吗 我已经在球拍中运行过它并且知道答案是什么 看起来第一个 lambda 函数将其他两个函数作为参数 但输入在哪里 lambda x 2 and l
  • 在 C 中创建字符串的宏

    替代标题 以帮助搜索 将预处理器标记转换为字符串 我怎样才能从一个字符串C宏的价值 原始问题 我想用C define在编译时构建文字字符串 该字符串是因调试 发布等而更改的域 我想做这样的事情 ifdef TESTING define IV
  • 是否有 Perl 模块可以连接 Google Contacts API?

    我想编写一个命令行程序来将联系人添加到 GoogleMail WWW 联系方式 Google联系方式 http search cpan org dist WWW Contact GoogleContactsAPI似乎只能从 Google 获
  • 多核机器上 .NET 操作的非线性扩展

    我在 NET 应用程序中遇到了一种奇怪的行为 该应用程序对一组内存数据执行一些高度并行的处理 当在多核处理器 IntelCore2 Quad Q6600 2 4GHz 上运行时 它会在启动多个线程来处理数据时表现出非线性扩展 当在单核上作为
  • Wix升级:预选功能

    我们使用 Wix 来创建我们的安装程序 我们使用的用户界面可以选择需要安装的功能 某些功能默认启用 其他功能则禁用 但是 当我们运行升级时 这些默认值将被保留 我们希望安装程序记住安装了哪些功能 并在功能树中启用它们以进行升级 应禁用所有其
  • Railsinstaller 遇到问题

    我在 Windows 8 笔记本电脑上遇到了 Railsinstaller 问题 这是由于无法使用以下命令在 项目 目录中运行服务器rails s命令 但是与许多教程相反 我每次都会收到这个命令 C Sites demo gt rails
  • 商业产品中的 JavaFX [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用 JavaFX 作为大型商业产品的开发框架 我可以在不违反 Oracle 许可的情况下关闭未来产品的源代码并使用 Oracle JavaFX
  • 我想显示第一个列表中的第一个单词并显示第二个列表中的 10 个单词,依此类推-python。我尝试使用 range 和 zip。它仍然不起作用

    在这里 我正在创建一个名为 li 的列表 其中包含标签文本和名为 list2 的列表 其中包含 span 文本 我使用 zip 附加它 现在 我有一个名为 name 的第三个列表 它有 2 个值 最活跃者 增益者 我想要 Mostactiv