昨天接到一个面试公司的电话,对我进行了一个前期的考评,其目标就是让我爬取雪球网的股票评论信息,当接到该公司的这个爬虫题目的时候,其实是挺兴奋的,然后在第二天早上起来,就开始爬取,花了大概一个半个小时的时间,终于把所有的问题解决了,并测试发现没有出现任何问题。

首先我需要爬取的网页是雪球网的股票信息评论,所以我直接就进入了股票专栏,在这个网页,我们可以很直观的分析出来这个网页是由ajax动态加载出来的信息,所以我们直接找这个网页的ajax就可以了,大概花了一分钟,我就找到了这个网页的ajax,

我们可以发现这里关于类似的ajax请求,分别对应了列表中的涨跌幅榜和成交量排行榜,成交额排行榜,但是我们发现这都只是股票榜单中的一部分信息,所以我们要点击更多,针对这其中的所有股票信息进行爬取。

当我们打开这个ajax的时候就可以发现,在这个ajax中的一条信息叫做count这个信息就是来存储所有股票的总和的,我们发现在这个链接中有一个参数是用来控制一页获取多少个的变量,所以我们只需要将这个变量控制即可获取整个列表的相关信息。

因为我已经对这个流程已经有了整体的调研,所以我很清楚我们获取这个ajax就是为了获取其中股票的编码即为symbol,这个参数是用来获取评论中的参数symbol。

当我们获取到symbol参数了以后 ,接下来就是来获取每只股票的评论详情了,我们打开评论区详情以后,我们会发现我们更换这个网页的相关信息,网页架构并没有发生任何变化,所以这个网页也是有ajax动态加载出来的 ,

我们来解析一下这个url会发现这个url只有两个参数需要实时的变化,即就是symbol来决定你是哪一只股票的评论,page来控制你的页码,当然在这个ajax中我们也可以找到一个参数叫做count,这个也是当前所有的评论总和,但是我也发现几乎每一只股票的信息大概都是100页,当然你也可以写成100次循环,也可以用判断的方法来控制循环。

到这我们的整个分析过程就完了,但是当我们切身去爬取的时候就会遇到一些问题,例如在没有登录的时候,我们会有一个在一个时间段爬取次数的限制,当你登录上时,如果访问过快,就会有ip封禁,所以我们也要有属于自己的ip池来应对这些方案。

接下来不多bb,直接上代码!!!

下面的代码我没有加入cookie和我的代理池,如有需要,请自行添加。

# -*- coding: utf-8 -*-
# Created : 2018/8/26 18:33
# author :GuoLi# -*- coding: utf-8 -*-
# Created : 2018/8/26 18:33
# author :GuoLi
import pymongo
import requests
import time
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
import json
class Xueqiuspider:def __init__(self):# a = int(round(time.time(), 3) * 1000)self.start_url = 'https://xueqiu.com/service/v5/stock/screener/quote/list?page={}&size=30&order=desc&order_by=percent&exchange=CN&market=CN&type=sha&'self.headers= {"Host": "xueqiu.com","User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36","Referer": "https://xueqiu.com/hq","Cookie": cookie,}def parse(self):for i in range(100):response = requests.get(self.start_url.format(i+1), headers=self.headers, verify=False)res_list = response.json()['data']['list']count_all = response.json()['data']['count']if i * 30 < count_all:time.sleep(5)response = requests.get(self.start_url.format(i + 1), headers=self.headers, verify=False)res_list = response.json()['data']['list']yield res_listelse:breakdef parse_all_url(self,res):symbol = res['symbol']count = 100for i in range(100):detail_url = "https://xueqiu.com/statuses/search.json?count=10&comment=0&symbol={}&hl=0&source=user&sort=time&page={}&q=".format(symbol, i+1)print(detail_url)try:content_list,count = self.parse_comment_url(detail_url)time.sleep(5)except Exception as e:print("Error:", e)time.sleep(5)content_list = self.parse_comment_url(detail_url)time.sleep(5)self.save_file(content_list)def parse_comment_url(self,url):proxies = self.get_proxy()response = requests.get(url,headers = self.headers,verify=False)res_list = response.json()['list']count = response.json()['count']content_list = []for res in res_list:item = {}item['user_name'] = res['user']['screen_name']item['user_description'] = res['user']['description']item['comment_title'] = res['title']item['comment_text'] = res['text']content_list.append(item)return content_list,countdef save_file(self,content_list):for content in content_list:with open('xueqiu2.json','a')as f:f.write(str(content).encode("gbk", 'ignore').decode("gbk", "ignore"))f.write("\n")def run(self):for res_list in self.parse():for res in res_list:self.parse_all_url(res)if __name__ == '__main__':xueqiu = Xueqiuspider()xueqiu.run()

以上就是整个分析和代码测试的过程,我自己因为代理的实效性,抓取了10000+评论,没有出现任何问题

如果遇到问题,欢迎交流!

联系方式:qq:986361369

爬取雪球网的股票信息评论相关推荐

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

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

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

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

  3. 爬取雪球网股票信息(一)

    这篇是爬取股票名称,我用了三个模块来实现.Crwal_Share_Names.Saved_MongDB.DEFINITION. 首先是最简单的一个模块:DEFINITION,定义,这个模块里面定义了要 ...

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

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

  5. python爬虫爬取雪球网_Python爬虫爬取天天基金网基金排行

    本文以天天基金网为例,爬取网站上的基金排行并存储在本地记事本中和MongoDB数据库中. 打开网页我们看到每页最多显示50个基金信息,在源代码中,我们发现其他页码没有跳转链接.但是我们选择右下角不分页 ...

  6. python爬虫——如何爬取ajax网页之爬取雪球网文章

    效果图 传送门点击传送门 进入网站之后我们打开开发工具之后,往下滑时会出现一个接口(当然滑的越多接口越多) 我们通过对比两个及以上的接口进行分析它们的不同之处(这叫找规律) 可以发现max_id是在变 ...

  7. Python爬虫 爬取雪球网部分数据

    import requests import jsonurl = {'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?s ...

  8. python爬虫淘宝评论_Python爬取淘宝店铺和评论

    1 安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动s ...

  9. python开发跟淘宝有联系没_Python爬取淘宝店铺和评论

    1.安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动s ...

  10. 利用python分析电商_Python实现爬取并分析电商评论

    现如今各种APP.微信订阅号.微博.购物网站等网站都允许用户发表一些个人看法.意见.态度.评价.立场等信息.针对这些数据,我们可以利用情感分析技术对其进行分析,总结出大量的有价值信息.例如对商品评论的 ...

最新文章

  1. Kolla 让 OpenStack 部署更贴心
  2. 时间序列预测——深度好文,ARIMA是最难用的(数据预处理过程不适合工业应用),线性回归模型简单适用,预测趋势很不错,xgboost的话,不太适合趋势预测,如果数据平稳也可以使用。...
  3. 案例:使用jquery的ajax load方法更新局部页面并应用NProgress库实现顶部进度条
  4. 计算机php什么意思,我们所说的计算机一般是指什么
  5. Hadoop/Spark相关面试问题总结
  6. minheight能继承吗_继承人放弃继承遗产继承并做出公证还能反悔吗?
  7. 上学是穷人的出路吗?
  8. 输入法全屏_五笔输入法那么方便,为什么败给了拼音?如今,我可算是明白了...
  9. (转载)android:visibility和android:scaleType 属性
  10. 如何解决markdown中图片上传的问题
  11. mybatis-plus 自定义UpdateWrapper(二)实现列的case set
  12. 从使用Python开发一个Socket示例说到开发者的思维和习惯问题
  13. 【可视化】数据仓库与数据挖掘大作业
  14. Super超级ERP系统---(7)货位管理
  15. Spring IoC 详解(下篇)
  16. Tomcat服务读取静态图片/静态资源
  17. 使用ifconfig结合awk提取主机的IP地址方法
  18. 换硬币 (20 分)Java【循环】
  19. Kinect-Unity相关
  20. BBEdit 12.6.3 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具

热门文章

  1. 在vs2010中运行guge.cpp(SkeletonDepth)的时候程序是网上的,可是总是提示我没有KinectUNI.lib。
  2. Office 2010 安装过程中出错
  3. 25匹赛马得前三名问题求解
  4. 层次分析法和多属性决策算法
  5. 快手数码手机广告要怎么投放?需要满足什么条件?
  6. URI:统一资源标识符
  7. 虚拟机CentOS-7修改ip地址
  8. Uncode、ASCII、UTF-8之前的转换函数
  9. Augustus:真核生物基因结构预测软件-安装篇
  10. redis——jedis的使用以及springboot整合redis