鱼C论坛

 找回密码
 立即注册
查看: 1462|回复: 2

[已解决]股票信息爬虫

[复制链接]
发表于 2022-4-26 22:51:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 JeremyCheung 于 2022-4-26 22:55 编辑

请问个各位大神这个代码为什么爬不到股票的信息?求求帮助!请多多指教!谢谢!


import requests
from fake_user_agent.main import user_agent
import re
import csv


def getHtml(url):
    r = requests.get(url, headers={
        'User-Agent': user_agent("chrome"),
    })
    r.encoding = r.apparent_encoding
    return r.text


stockUrl = 'http://quote.eastmoney.com/stocklist.html'
PATTERN_STOCK = "<li><a.*>(\w*)\((\d{6})\)</a></li>"
if __name__ == '__main__':
    html = getHtml(stockUrl)
    reslist = re.findall(PATTERN_STOCK, html)
    # 数据清洗:去掉非个股,个股以6(沪市),0(深市),3(创业板)开头
    datalist = reslist[:]
    for res in reslist:
        print(res)
        if not (str(res[1]).startswith('6') or str(res[1]).startswith('3') or str(res[1]).startswith('0')):
            datalist.remove(res)
    f = open('C:/Users/MC/Desktop/stock csv/stock.csv', 'w+', encoding='utf-8', newline="")
    writer = csv.writer(f)
    writer.writerow(('名称', '代码'))
    for data in datalist:
        writer.writerow((data[0], data[1]))
    f.close()


非原创的~~
最佳答案
2022-4-27 06:21:59
本帖最后由 isdkz 于 2022-4-27 06:25 编辑

股票信息是 js 动态渲染的,换个模块,使用 requests-html 之前先执行以下命令安装:

  1. pip install requests-html -i https://mirrors.aliyun.com/pypi/simple
复制代码


对你的代码修改如下:
  1. from requests_html import HTMLSession
  2. import csv


  3. def getHtml(url):
  4.     sess = HTMLSession()
  5.     r = sess.get(url)
  6.     r.html.render()
  7.     return r.html


  8. stockUrl = 'http://quote.eastmoney.com/stocklist.html'

  9. if __name__ == '__main__':
  10.     html = getHtml(stockUrl)
  11.    
  12.     # 数据清洗:去掉非个股,个股以6(沪市),0(深市),3(创业板)开头
  13.     datalist = html.find('#table_wrapper-table > tbody > tr')
  14.     reslist = datalist[:]
  15.     print(datalist)
  16.     for res in reslist:
  17.         temp = res.find('td:nth-child(2) > a')[0].text
  18.         print(temp)
  19.         if (not ((temp.startswith('6') or
  20.             temp.startswith('3') or temp.startswith('0')))):
  21.             datalist.remove(res)
  22.     f = open('stock.csv', 'w+', encoding='utf-8-sig', newline="")
  23.     writer = csv.writer(f)
  24.     writer.writerow(('名称', '代码'))
  25.     for data in datalist:
  26.         temp0 = data.find('td.mywidth > a')[0].text
  27.         temp1 = data.find('td:nth-child(2) > a')[0].text
  28.         writer.writerow((temp0, '\t' + temp1))
  29.     f.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-27 06:21:59 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-4-27 06:25 编辑

股票信息是 js 动态渲染的,换个模块,使用 requests-html 之前先执行以下命令安装:

  1. pip install requests-html -i https://mirrors.aliyun.com/pypi/simple
复制代码


对你的代码修改如下:
  1. from requests_html import HTMLSession
  2. import csv


  3. def getHtml(url):
  4.     sess = HTMLSession()
  5.     r = sess.get(url)
  6.     r.html.render()
  7.     return r.html


  8. stockUrl = 'http://quote.eastmoney.com/stocklist.html'

  9. if __name__ == '__main__':
  10.     html = getHtml(stockUrl)
  11.    
  12.     # 数据清洗:去掉非个股,个股以6(沪市),0(深市),3(创业板)开头
  13.     datalist = html.find('#table_wrapper-table > tbody > tr')
  14.     reslist = datalist[:]
  15.     print(datalist)
  16.     for res in reslist:
  17.         temp = res.find('td:nth-child(2) > a')[0].text
  18.         print(temp)
  19.         if (not ((temp.startswith('6') or
  20.             temp.startswith('3') or temp.startswith('0')))):
  21.             datalist.remove(res)
  22.     f = open('stock.csv', 'w+', encoding='utf-8-sig', newline="")
  23.     writer = csv.writer(f)
  24.     writer.writerow(('名称', '代码'))
  25.     for data in datalist:
  26.         temp0 = data.find('td.mywidth > a')[0].text
  27.         temp1 = data.find('td:nth-child(2) > a')[0].text
  28.         writer.writerow((temp0, '\t' + temp1))
  29.     f.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-28 13:22:47 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 04:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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