weixin_55136170 2021-02-27 14:57 采纳率: 50%
浏览 70
已采纳

使用正则表达式爬取雪球网页中的市盈率-(代码中变量:shiyinglv)属性时如何得到正确值?

各位大侠,本人在使用正则表达式爬取雪球网页中的市盈率 -(代码中变量:shiyinglv) 属性时无法得到正确值,始终得到空列表,怀疑是正则表达式中有中文导致(代码中倒数第三行)

shiyinglv = re.findall('市盈率(动): <span>(.*?)</span>',html.decode('utf-8'))

另外两个变量 name,price 均可正确爬取(对应的正则表达式中未使用中文)

求各位大侠不吝赐教,应该对获得变量 shiyinglv 的代码如何做改进才能得到正确的数值?

需要爬取的网页如下:
xueqiu.com/S/SH601318
程序运行结果为:
[‘中国平安 (SH:601318)’] [‘85.18’] []
其中第三个值为 shiyinglv,但始终得到的为空

import requests
import re
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36’
}
def getHTMLText(url):

try:

    r = requests.get(url, timeout = 30,headers=headers)

    r.raise_for_status()

    r.encoding = r.apparent_encoding

    print(r.encoding)

    return r.content

except:

    return ""
def getStockInfo(url):

html = getHTMLText(url)

name = re.findall('<div class="stock-name">(.*?)</div>',html.decode('utf-8'))

price = re.findall('<div class="stock-current"><strong>¥(.*?)</strong>',html.decode('utf-8'))

shiyinglv = re.findall('市盈率(动): <span>(.*?)</span>',html.decode('utf-8'))

print(name,price,shiyinglv)
getStockInfo(‘xueqiu.com/S/SH601318')

 

  • 写回答

1条回答 默认 最新

  • wozaiyizhideng 2021-02-27 16:15
    关注

     将括号转义一下。

        shiyinglv = re.findall('市盈率\(动\):<span>(.*?)</span>', html.decode('utf-8'))
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog