写一个爬取股票人气排名的Python程序!

Pandasquery函数为我们提供了一种编写查询过滤条件更简单的方法,特别是在的查询条件很多的时候,在本文中整理了10个示例,掌握着10个实例你就可以轻松的使用query函数来解决任何查询的问题。

如果你正在学习Python并且找不到方向的话可以试试我这一份学习方法+籽料呀! 点击 领取(不要米米)

一、选择股票人气排名网址

小编选择股票人气排名的网址是同花顺旗下的问财网址。

同花顺股票软件是一款提供行情显示、行情分析和行情交易的股票软件,是投资者炒股的入门必备工具之一。其强大、方便、人性化,且免费给投资者提供网上股票证券交易资讯行情。

其主要特色功能如下:

(1)提供上证所Level-2主力买卖指标。

(2)闪电下单模块使投资者委托交易更加快捷和方便。

(3)问财是同花顺旗下的AI投顾平台,是财经领域落地最为成功的自然语言、语音问答系统。

(4)资金博弈,将主力大单显示给投资者。

(5)股票人气排名结合市场人气,给每支股票排名。

笔者认为人气排名与资金博弈都对量化选股有重要影响,甚至会严重影响收益率,所以要重点研究。操作步骤如下:

(1)打开同花顺旗下的问财网址

http://www.iwencai.com/unifiedwap/home/index?qs=1,如图6.5所示。在这里,你可以编写简单量化语句或组合筛选语句。例如,跳空高开股票;市盈率大于3的股票;跳空高开0.5%~7%之间,boll线突破中轨等。

  图1      问财主页

 (2)输入“人气”,搜索人气,如图2所示,股票人气排名按从高到低排列。

     图2     问财人气搜索

(3)通过对Network搜索发现,没有现成的网址供我们直接爬取,其中原因之一是在today.js?hexin中进行了JS加密。

(4)在Elements中查找、定位元素,如图3所示。

 图3       在Elements中查找、定位元素

(5)使用Selenium进行自动化爬取。

(6)使用find_element_by_id定位元素,或者使用wd.page_source打印网页源代码,通过正则或BeautifulSoup定位元素。

二、使用request请求并了解反爬技术

如果笔者只想简单、直接地使用requests.get()语句获取股票人气排名,不想麻烦地使用Selenium进行自动化爬取,那么对这个网站就无计可施了吗?答案是还是有办法的。

通过笔者的深入了解和仔细研究,网址

http://www.iwencai.com/stockpick/search?typed= 1&preParams=2&ts=2&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94会提供网站源代码。

下面对该网址进行爬取。详细代码如下:

import requestsurl='http://www.iwencai.com/stockpick/search?typed=1&preParams=2&ts=2&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94'r = requests.get(url)print(r.text)print(r.status_code)

返回值如图4所示。

以上代码的返回值为403,也就是代表该网站被禁止访问。是什么原因导致该网站被禁止访问呢?答案就是反爬技术。该网站不想让大家顺利爬取,采用了反爬技术,即采用设置headers(UA、referer、cookies)识别请求的浏览器身份,当请求headers中没有带headers时,返回403。

      图4     返回值

所以我们也设置headers请求。详细代码如下:​​​​​​​

import requestsheaders={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie':'PHPSESSID=09577a6ece656917a4c43358873b7ae6; cid=09577a6ece656917a4c43358873b7ae61617717486; ComputerID=09577a6ece656917a4c43358873b7ae61617717486; WafStatus=0; v=A7qdyFvvjlmHcQK1nT3B0UKnC-vfaz5vsO-y6cSzZs0Yt1RdrPuOVYB_AvSX','Host': 'www.iwencai.com','Referer': 'http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'}url='http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=1&selfsectsn =&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94'r = requests.get(url,headers = headers)print(r.text)print(r.status_code)

返回结果如下:​​​​​​​

<html><body>    <script type="text/javascript" src="//s.thsi.cn/js/chameleon/chameleon.1.6.min.1617800. js"></script> <script src="//s.thsi.cn/js/chameleon/chameleon.1.6.min.1617800.js" type= "text/javascript"></script>    <script language="javascript" type="text/javascript">    window.location.href="//www.iwencai.com/stockpick/search?typed=1&preParams=&ts= 1&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94";</script>    </body></html>200

  与我们想要的Elements代码不太一样,如图5所示。

   图5    Elements代码

 

这是网站为了反爬设置的第二个障碍。该网站设置Cookie,并对Cookie进行了函数加密,加密与时间有关。这样爬虫就必须对Cookie中的内容进行破解,或者使用第一个方法,用Selenium自动化爬取。

我们不在这里讲解Cookie的JS加密,前端经验丰富的读者可以自行了解利用浏览器的JS代码调试功能,具体在Sources里面调试。我们把Cookie修改成如下代码,即可解决问题。​​​​​​​

'Cookie':'PHPSESSID=09577a6ece656917a4c43358873b7ae6; cid=09577a6ece656917a4c43358873b7ae61617717486; ComputerID=09577a6ece656917a4c43358873b7ae61617717486; WafStatus=0; user_status=0; other_uid=Ths_iwencai_Xuangu_ckirvbpw79oikwk4n56xv71mwnjy1wbz; v=A3QK7FAaqMovLzyGG4vnAzjpRTnlTZg32nEsew7VAP-CeRpvNl1oxyqB_Ald',

爬取代码如下:​​​​​​​

import requestsheaders={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie':'PHPSESSID=09577a6ece656917a4c43358873b7ae6; cid=09577a6ece656917a4c43358873b7ae61617717486; ComputerID=09577a6ece656917a4c43358873b7ae61617717486; WafStatus=0; user_status=0; other_uid=Ths_iwencai_Xuangu_ckirvbpw79oikwk4n56xv71mwnjy1wbz; v=A3QK7FAaqMovLzyGG4vnAzjpRTnlTZg32nEsew7VAP-CeRpvNl1oxyqB_Ald','Host': 'www.iwencai.com','Referer': 'http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'}url='http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94'r = requests.get(url,headers = headers)print(r.text)print(r.status_code)

返回结果如图6所示。

     图6  返回结果 

2021年4月7日美邦服饰对应在r.status_code中的位置,如图7所示。

  图7 美邦服饰对应在r.status_code中的位置

三、使用

BeautifulSoup查找人气排名并保存数据

爬取网页代码,可以使用三种网页抓取方法,如表1所示。

学会使用find和find_all分别找到第一个符合要求的标签和所有符合要求的标签。

(1)find:找到第一个符合要求的标签。常用语法格式如下:​​​​​​​

 soup.find('a')            # 找到第一个符合要求的a标签     soup.find('a', title="xxx")     soup.find('a', alt="xxx")     soup.find('a', class_="xxx")     soup.find('a', id="xxx")

(2)find_all:找到所有符合要求的标签。常用语法格式如下:​​​​​​​

 soup.find_all('a')     soup.find_all(['a','b'])       # 找到所有符合要求的a标签和b标签     soup.find_all('a', limit=5)      # 限制仅找到前5个a标签

  所以爬虫代码如下:​​​​​​​

import requestsfrom bs4 import BeautifulSoupheaders={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie':'PHPSESSID=09577a6ece656917a4c43358873b7ae6; cid=09577a6ece656917a4c43358873b7ae61617717486; ComputerID=09577a6ece656917a4c43358873b7ae61617717488; WafStatus=0; user_status=0; other_uid=Ths_iwencai_Xuangu_ckirvbpw79oikwk4n56xv71mwnjy1wbz; v=A3QK7FAaqMovLzyGG4vnAzjpRTnlTZg32nEsew7VAP-CeRpvNl1oxyqB_Ald','Host': 'www.iwencai.com','Referer': 'http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=1&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/89.0.4389.114 Safari/537.36'}data={'typed': '1','preParams': '2','ts': '2','f': '','qs': '','selfsectsn': '','querytype': '','searchfilter':'' ,'tid': 'stockpick','w': '人气'}url='http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=1&selfsectsn =&querytype=&searchfilter=&tid=stockpick&w=%E4%BA%BA%E6%B0%94'r = requests.get(url,headers = headers,params=data)soup = BeautifulSoup(r.text, "lxml")soup.find_all('a',target="_blank")[2:]

 返回结果如图8所示。

         图8     返回股票代码

 返回值顺序即是全市综合人气值排名顺序。将清洗好的数据使用to_csv()函数保存到本地。

如果你是准备学习Python或者正在学习(想通过Python兼职),下面这些你应该能用得上: 【点击这里】领取!

 

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,学习不再是只会理论

④ 华为出品独家Python漫画教程,手机也能学习

⑤ 历年互联网企业Python面试真题,复习时非常方便****

### 回答1: Python是一种强大的编程语言,它可以用于进行各种统计分析。对于各地区美食的统计分析,Python也可以帮助我们进行数据处理和可视化。 首先,我们需要收集各地区的美食数据。可以通过网络爬虫技术获取相关信息,或者使用已有的数据集。然后,我们可以使用Python程序来处理这些数据,例如清洗、筛选和整理。 接下来,我们可以使用Python的数据分析库,如Pandas和NumPy,对美食数据进行分析。可以统计各地区的美食种类、数量和流行度。在Python中,我们可以使用相关函数和方法进行计数、排序和聚合操作。 如果我们想要对各地区美食的属性进行比较和分析,我们可以使用Python的统计库,如SciPy和StatsModels。可以计算各地区美食的平均值、方差和相关性等统计指标。这样可以帮助我们了解各地区美食的特点和差异。 最后,我们可以使用Python的数据可视化库,如Matplotlib和Seaborn,将分析结果可视化。可以绘制柱状图、饼图、地图和热力图等图表,以直观地展示各地区美食的统计数据。 综上所述,Python可以为各地区美食的统计分析提供强大的支持。它能够处理和分析数据,并通过可视化工具展示结果,帮助我们深入了解各地区的美食特点。通过运用Python的统计分析能力,我们可以在美食领域做出更准确的决策和预测。 ### 回答2: Python可以用来进行各地区美食的统计分析。首先,我们可以使用Python的爬虫功能来获取各地区美食的信息。通过抓取网络上的美食评论、菜谱等数据,可以得到不同地区的美食名称、口味特点、食材等信息。 接下来,我们可以使用Python的数据处理和分析库,如Pandas和NumPy,对获取到的数据进行清洗和整理。可以将美食数据进行分类,如按地区、菜系、食材等进行分类,以便后续的分析。 然后,可以使用Python的可视化工具,如Matplotlib和Seaborn,对美食数据进行可视化分析。可以绘制各地区美食数量的柱状图或饼图,以展示不同地区的美食分布情况。还可以通过制作热力图,来展示不同地区美食的热门程度。 此外,Python还可以进行更深入的统计分析。例如,可以使用Python的统计学库SciPy进行假设检验,来判断不同地区美食的口味是否存在显著差异。还可以使用Python的机器学习库,如Scikit-learn,进行预测分析,比如根据不同地区的美食特点来预测消费者对某种美食的喜好程度。 总之,Python作为一种功能强大的编程语言,可以进行各种各样的数据处理和分析任务,包括对各地区美食的统计分析。 ### 回答3python各地区美食统计分析 美食是一个国家和地区的文化象征,不同地区之间的美食种类和特色可以展示出其独特的风土人情。使用Python进行各地区美食的统计分析可以帮助我们更好地了解各地的饮食文化,并为美食爱好者提供相关的参考和建议。 首先,我们可以通过调用网络爬虫来获取各地区的美食信息。Python提供了许多强大的网络爬虫库,如BeautifulSoup和Scrapy等,可以帮助我们从各个美食网站上抓取美食菜谱、推荐等相关信息。 其次,我们可以使用Python的数据分析库,如Pandas和NumPy等,对爬取到的数据进行清洗和整理。可以提取出美食的名称、地区、食材、制作方法等重要信息,并进行分类和汇总。 然后,我们可以利用Python的可视化库,如Matplotlib和Seaborn等,将统计结果呈现出来。可以使用柱状图、饼图等方式展示各地区美食的数量、类型分布等信息。同时,我们还可以利用地理信息系统库,如Folium,将美食在地图上进行可视化,更直观地展示各个地区的美食特色。 最后,我们可以进行一些统计分析,如计算各地区美食的平均评分、人气指数等。可以通过Python的统计库,如SciPy和StatsModels等,进行数据分析、回归分析等,探寻美食与地理、文化等因素之间的关联性。 总结来说,使用Python进行各地区美食的统计分析,可以帮助我们更全面地了解各地的美食文化,为美食爱好者提供相关的信息和参考。同时,结合数据分析和可视化技术,可以让我们更直观地呈现统计结果,从而更好地发现与探索美食领域的有趣现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值