本文以天天基金网为例,爬取网站上的基金排行并存储在本地记事本中和MongoDB数据库中。

打开网页我们看到每页最多显示50个基金信息,在源代码中,我们发现其他页码没有跳转链接。但是我们选择右下角不分页,网站的URL发生变化:

从:

http://fund.eastmoney.com/data/fundranking.html#tall;c0;r;szzf;pn50

变化为:

http://fund.eastmoney.com/data/fundranking.html#tall;c0;r;szzf;pn10000

因此我们得知pn后面的参数控制每页显示数量,我们将网址改为pn100发现网站显示100条信息。

分析完网址信息,我们对网站内容进行分析

一开始我使用如下代码获取页面信息,但是并不能提取任何信息。

defgethtml(url):headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0'}response=requests.get(url,headers=headers)ifresponse.status_code==200:# response.encoding = 'gb2312'  # 转码print('**')returnresponse.textelse:returnNonedefgetinformation(html):'''doc = pq(html)

items = doc('#dbtable tbody tr ')'''html=etree.HTML(html)result=html.xpath('//body//div[7]//div[3]//table[2]//tbody//tr[1]//td[2]/text()')print(result)# dbtable tbody tr

分析网页源代码,发现每条数据后面都有事件监听器,js加载。因此我思考是不是网页的内容是js加载出来的,使用response.text无法加载网页数据。此外,网页也没有ajax加载格式。

因此尝试使用selenium加载网页,获取页面信息,事实证明,这是对的。

我们将获取的网页信息利用pyquery提取需要的信息

我们将数据存储在MongoDB和txt记事本中

fromseleniumimportwebdriverfromselenium.webdriver.support.waitimportWebDriverWaitfrompyqueryimportPyQueryaspqimportcsvimportjsonfromlxmlimportetreeimportpymongoclient=pymongo.MongoClient(host='localhost',port=27017)db=client.天天基金# 指定数据库,若不存在,则直接创建一个test数据库collection=db.基金排行defgethtml(url):brower=webdriver.Firefox()brower.get(url)html=brower.page_sourcereturnhtmldefgetinformation(html):doc=pq(html)items=doc('html body div.mainFrame div.dbtable table#dbtable tbody tr ').items()foriteminitems:list=[]print(item.find('td').text().strip())write(item.find('td').text().strip())infors=item.find('td').items()fori,inforinenumerate(infors):list.append(str(infor.text().strip()))ifi==2:href=infor.find('a').attr('href')write(href)list.append(href)information={'index':list[1],'代码':list[2],'网址':list[3],'简称':list[4],'日期':list[5],'单位净值':list[6],'累计净值':list[7],'日增长绿':list[8],'近一周':list[9],'近一月':list[10],'近三月':list[11],'近六月':list[12],'近一年':list[13],'近两年':list[14],'近三年':list[15],'今年来':list[16],'成立来':list[17],'自定义':list[18],'手续费':list[19],}collection.insert_one(information)defwrite(information):withopen('基金.txt','a',encoding='UTF-8')asf:f.write(information+'\n')f.close()url='http://fund.eastmoney.com/data/fundranking.html#tall;c0;r;szzf;pn100'if__name__=='__main__':html=gethtml(url)getinformation(html)

将字典information传入write函数中,可以得到另一种方式存储在记事本中。

write(str(information))

1

python爬虫爬取雪球网_Python爬虫爬取天天基金网基金排行相关推荐

  1. PyQt5制作一个爬虫小工具,爬取雪球网上市公司的财务数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于可以叫我才哥 ,作者:可以叫我才哥 最近有朋友需要帮忙写个爬虫脚本,爬取雪球网一些上 ...

  2. 简单使用resquests爬取雪球网数据,分析股票走势

    简单使用resquests爬取雪球网数据,分析股票走势 import requests import pymongo import json # 数据库初始化 client = pymongo.Mon ...

  3. python爬虫金融数据_python爬虫项目-爬取雪球网金融数据(关注、持续更新)

    (一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=cn&firstname=1&secondname=1_ ...

  4. python爬取新闻网站内容_python爬虫案例:抓取网易新闻

    此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...

  5. python跑一亿次循环_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  6. python 网上爬取数据源码_Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章...

    1.最简单的Python爬虫 最简单的Python爬虫莫过于直接使用urllib.request.urlopen(url=某网站)或者requests.get(url=某网站)例如:爬取漫客栈里面的漫 ...

  7. python爬取网页停止_Python爬虫之爬取静态网页

    所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息.所以,想要学习python爬虫,需要具备一些http的 ...

  8. python爬取cctalk视频_python爬虫urllib使用和进阶 | Python爬虫实战二

    python爬虫urllib使用和进阶 上节课已经介绍了爬虫的基本概念和基础内容,接下来就要开始内容的爬取了. 其实爬虫就是浏览器,只不过它是一个特殊的浏览器.爬取网页就是通过HTTP协议访问相应的网 ...

  9. python爬取数据步骤_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

最新文章

  1. 【小白的CFD之旅】小结及预告
  2. SQLSERVER2012里的扩展事件初尝试(上)
  3. 电路与电子学-第一章直流电路分析方法小概括
  4. 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!
  5. 女程序员怀孕7个月坚持上班敲代码
  6. 基于表达式的访问控制
  7. matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入
  8. arm linux udp 自发自收_嵌入式linux编程开发必备知识
  9. java mongo数据去重复_java – MongoSpark保存重复的密钥错误E11000
  10. UML 结构图之包图 总结
  11. du和df命令的区别
  12. 2课:单片机引脚介绍
  13. 工程思维:把每件事都当作一个项目来推进
  14. 谷歌大神 Jeff Dean 的那些“惊人真相”
  15. 【noi.ac】#283. 唐时月夜
  16. m8+android固件,M8完美Android 2.2 LBE A11版固件发布
  17. 正则表达式与re模块
  18. 智能建筑弱电工程基本的一些施工项目
  19. Rational Rose的讲解
  20. linux服务器配置免密登录方式(vscode 以及 MobaXterm 登录)

热门文章

  1. R语言给图形填充颜色(polygon函数)
  2. 深夜,我用python爬取了整个斗图网站,不服来斗
  3. 单进程服务器-epoll版
  4. 微信内置JsAPI之WeixinJSBridge
  5. Team Foundation Server 2010 安装、部署与配置(二):安装之前的预备工作 .
  6. Asp.net三层结构原理与用意学习入门教程(五)
  7. 深度学习-Tensorflow1.x-CNN中的padding参数
  8. mysql 200列_Mysql数据表基本
  9. c malloc结构体_9.8 C++动态分配 | 存放结构体变量
  10. leetcode - 1218. 最长定差子序列 (使用哈希表)