鱼C论坛

 找回密码
 立即注册
查看: 1238|回复: 11

[已解决]列表问题

[复制链接]
发表于 2019-4-6 09:17:52 | 显示全部楼层 |阅读模式
3鱼币
原代码如下,
import requests
from bs4 import BeautifulSoup
import time
import xlwt
headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
for k in range(3,4):   
    url='https://quote.stockstar.com/Radar/stockperformance_4_2_1_%d.html'%k
    print(url)
    res = requests.get(url,headers=headers,timeout=10)
    soup = BeautifulSoup(res.text,'lxml')
    all_lists=[]
    lt_hs=[]
    i = 0
    for item in soup.select('tr')[0:-1]:
        try:
            daima = item.select('td a')[i].text         
            jianceng = item.select('td')[i+1].text
            HSL = item.select('td')[i+4].text
            list=[daima,jianceng,HSL]            
            all_lists.append(list)      
                              
        except IndexError:
            pass
        print(daima,jianceng,HSL)
运行结果如下,
代码 简称 5日换手率
300471 厚普股份 110.62%
600115 东方航空 8.09%
600532 宏达矿业 51.31%

想把换手率大于30%的打印出来,请教大侠指导一下,谢谢,
最佳答案
2019-4-6 09:17:53

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import time
  4. import xlwt
  5. headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  6. for k in range(3,4):   
  7.      url='https://quote.stockstar.com/Radar/stockperformance_4_2_1_%d.html'%k
  8.      print(url)
  9.      res = requests.get(url,headers=headers,timeout=10)
  10.      soup = BeautifulSoup(res.text,'lxml')
  11.      all_lists=[]
  12.      lt_hs=[]
  13.      i = 0
  14.      j=0
  15.      for item in soup.select('tr')[0:-1]:
  16.          try:
  17.              daima = item.select('td a')[i].text         
  18.              jianceng = item.select('td')[i+1].text
  19.              HSL = item.select('td')[i+4].text
  20.              list=[daima,jianceng,HSL]            
  21.              all_lists.append(list)      
  22.              j+=1                  
  23.          except IndexError:
  24.              pass
  25.          if j>1:
  26.            fi=float(HSL.split("%")[0])
  27.          else:
  28.            fi=HSL        
  29.          if j==1:
  30.            print(daima,jianceng,fi)
  31.          else:
  32.            if j>1 and fi>30:
  33.              print(daima,jianceng,fi)


  34. '''
  35. E:\>python ex11.py
  36. https://quote.stockstar.com/Radar/stockperformance_4_2_1_3.html
  37. 代码 简称 5日换手率
  38. 300471 厚普股份 110.62
  39. 600532 宏达矿业 51.31
  40. 002198 嘉应制药 42.62
  41. 600446 金证股份 56.01
  42. 300618 寒锐钴业 54.66
  43. 600179 安通控股 35.44
  44. 603648 畅联股份 30.03
  45. 300554 三超新材 56.08
  46. 603383 顶点软件 38.2
  47. 600516 方大炭素 38.09
  48. 002103 广博股份 69.74
  49. 002405 四维图新 46.39
  50. 601678 滨化股份 41.8
  51. 603888 新华网 67.57
  52. 300723 一品红 33.3
  53. 601890 亚星锚链 53.86
  54. '''
复制代码
re2.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-6 09:17:53 | 显示全部楼层    本楼为最佳答案   

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import time
  4. import xlwt
  5. headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  6. for k in range(3,4):   
  7.      url='https://quote.stockstar.com/Radar/stockperformance_4_2_1_%d.html'%k
  8.      print(url)
  9.      res = requests.get(url,headers=headers,timeout=10)
  10.      soup = BeautifulSoup(res.text,'lxml')
  11.      all_lists=[]
  12.      lt_hs=[]
  13.      i = 0
  14.      j=0
  15.      for item in soup.select('tr')[0:-1]:
  16.          try:
  17.              daima = item.select('td a')[i].text         
  18.              jianceng = item.select('td')[i+1].text
  19.              HSL = item.select('td')[i+4].text
  20.              list=[daima,jianceng,HSL]            
  21.              all_lists.append(list)      
  22.              j+=1                  
  23.          except IndexError:
  24.              pass
  25.          if j>1:
  26.            fi=float(HSL.split("%")[0])
  27.          else:
  28.            fi=HSL        
  29.          if j==1:
  30.            print(daima,jianceng,fi)
  31.          else:
  32.            if j>1 and fi>30:
  33.              print(daima,jianceng,fi)


  34. '''
  35. E:\>python ex11.py
  36. https://quote.stockstar.com/Radar/stockperformance_4_2_1_3.html
  37. 代码 简称 5日换手率
  38. 300471 厚普股份 110.62
  39. 600532 宏达矿业 51.31
  40. 002198 嘉应制药 42.62
  41. 600446 金证股份 56.01
  42. 300618 寒锐钴业 54.66
  43. 600179 安通控股 35.44
  44. 603648 畅联股份 30.03
  45. 300554 三超新材 56.08
  46. 603383 顶点软件 38.2
  47. 600516 方大炭素 38.09
  48. 002103 广博股份 69.74
  49. 002405 四维图新 46.39
  50. 601678 滨化股份 41.8
  51. 603888 新华网 67.57
  52. 300723 一品红 33.3
  53. 601890 亚星锚链 53.86
  54. '''
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-6 10:03:09 | 显示全部楼层
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import time
  4. import xlwt
  5. headers = {'User-Agent':'Mozilla/5.0(Wimdows NT 6.1; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
  6. for k in range(3,4):   
  7.     url='https://quote.stockstar.com/Radar/stockperformance_4_2_1_%d.html'%k
  8.     print(url)
  9.     res = requests.get(url,headers=headers,timeout=10)
  10.     soup = BeautifulSoup(res.text,'lxml')
  11.     all_lists=[]
  12.     lt_hs=[]
  13.     i = 0
  14.     for item in soup.select('tr')[0:-1]:
  15.         try:
  16.             daima = item.select('td a')[i].text         
  17.             jianceng = item.select('td')[i+1].text
  18.             HSL = item.select('td')[i+4].text.replace(r'%','')
  19.             list1=[daima,jianceng,HSL]            
  20.             all_lists.append(list1)      
  21.                               
  22.         except IndexError:
  23.             pass
  24.         #print(daima,jianceng,HSL)
  25. print(all_lists[0][0],all_lists[0][1],all_lists[0][2])
  26. all_lists.pop(0)
  27. all_lists.sort(key = lambda x:float(x[2]),reverse=1)
  28. list_filter30 =[x for x in all_lists if float(x[2])>30]

  29. for i in list_filter30:
  30.     print(i[0],i[1],i[2]+r'%')
  31.         
复制代码


temp1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-6 11:07:14 | 显示全部楼层

大侠,HSL = item.select('td')[i+4].text己经获取到换手率的字符,
为什么紧接这句之后不能转换成float,为什么要加两次if----else?
list=[daima,jianceng,HSL],是定义二维列表?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-6 11:10:30 | 显示全部楼层

这位大侠是把最后一个数去掉,然后,排序再转换,比较,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-6 11:11:53 From FishC Mobile | 显示全部楼层
casanava 发表于 2019-4-6 11:07
大侠,HSL = item.select('td').text己经获取到换手率的字符,
为什么紧接这句之后不能转换成float,为什 ...

只有去掉%之后才能转
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-6 11:12:25 | 显示全部楼层
虽然这段代码不算复杂,不过,我还是没有弄清其中的逻辑关系,还请两位大侠详细解释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-6 11:16:23 | 显示全部楼层
wp231957 发表于 2019-4-6 11:11
只有去掉%之后才能转

HSL = item.select('td')[i+4].text
fi=float(HSL.split("%")[0])
这样还是出错,一定要增加两次if-----else,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-6 11:18:36 From FishC Mobile | 显示全部楼层
casanava 发表于 2019-4-6 11:16
HSL = item.select('td').text
fi=float(HSL.split("%")[0])
这样还是出错,一定要增加两次if-----els ...

头一次取的是表头,神马五日换手率
得把它让过去,因为它是无论如何也转换不了的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-6 11:19:36 | 显示全部楼层
casanava 发表于 2019-4-6 11:10
这位大侠是把最后一个数去掉,然后,排序再转换,比较,

只是把换手率的%去了 方便之后转成float排序 最后输出的时候再加上
pop(0)去掉的是最上面的‘代码 简称 5日换手率’那行 懒得看网页改爬虫内容 就改列表了=。=

除了%处理了下 其他改动都在#print下面了
逻辑差不多是
1.输出‘代码 简称 5日换手率’ 总列表去掉这行
2.总列表按换手率从大到小排序
3.去掉30%以下的 打印结果
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-6 12:54:18 | 显示全部楼层
谢谢两位大侠,两位都是高人,因为wp231957大侠先到,
我还有很多问题,下次再谢ietar大侠
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-6 18:19:37 | 显示全部楼层
都是大侠
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-5 02:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表