爬虫系列之股票信息爬取

1. 总述

慕课中这段代码的功能是首先从东方财富网上获得所有股票的代码,再利用我们所获得的股票代码输入url中进入百度股票页面爬取该只股票的详细信息。

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import traceback
 4 import re
 5
 6
 7 def getHTMLText(url):
 8     try:
 9         r = requests.get(url)
10         r.raise_for_status()
11         r.encoding = r.apparent_encoding
12         return r.text
13     except:
14         return ""
15
16
17 def getStockList(lst, stockURL):
18     html = getHTMLText(stockURL)
19     soup = BeautifulSoup(html, ‘html.parser‘)
20     a = soup.find_all(‘a‘)
21     for i in a:
22         try:
23             href = i.attrs[‘href‘]
24             lst.append(re.findall(r‘[s][hz]\d{6}‘, href)[0])
25         except:
26             continue
27
28
29 def getStockInfo(lst, stockURL, fpath):
30     for stock in lst:
31         url = stockURL + stock + ".html"
32         html = getHTMLText(url)
33         try:
34             if html == "":
35                 continue
36             infoDict = {}
37             soup = BeautifulSoup(html, ‘html.parser‘)
38             stockInfo = soup.find(‘div‘, attrs={‘class‘: ‘stock-bets‘})
39
40             name = stockInfo.find_all(attrs={‘class‘: ‘bets-name‘})[0]
41             infoDict.update({‘股票名称‘: name.text.split()[0]})
42
43             keyList = stockInfo.find_all(‘dt‘)
44             valueList = stockInfo.find_all(‘dd‘)
45             for i in range(len(keyList)):
46                 key = keyList[i].text
47                 val = valueList[i].text
48                 infoDict[key] = val
49
50             with open(fpath, ‘a‘, encoding=‘utf-8‘) as f:
51                 f.write(str(infoDict) + ‘\n‘)
52         except:
53             traceback.print_exc()
54             continue
55
56
57 def main():
58     stock_list_url = ‘http://quote.eastmoney.com/stocklist.html‘
59     stock_info_url = ‘http://gupiao.baidu.com/stock/‘
60     output_file = ‘D:/BaiduStockInfo.txt‘
61     slist = []
62     getStockList(slist, stock_list_url)
63     getStockInfo(slist, stock_info_url, output_file)
64
65
66 main()

2. 具体分析

2.1 获取源码

这段代码的功能就是使用requests库直接获得网页的所有源代码。

1 def getHTMLText(url):
2     try:
3         r = requests.get(url)
4         r.raise_for_status()
5         r.encoding = r.apparent_encoding
6         return r.text
7     except:
8         return ""

2.2 获取股票代码

在源码中可以看到每支股票都对应着一个6位数字的代码,这部分要做的工作就是获取这代码编号。这编号在a标签中,所有首先用BeautifulSoup选出所有的a标签,接下来我们在用attrs[href]来获取a标签的href属性值,最后用正则表达式筛选出我们想要的代码值。

 1 def getStockList(lst, stockURL):
 2     html = getHTMLText(stockURL)
 3     soup = BeautifulSoup(html, ‘html.parser‘)
 4     a = soup.find_all(‘a‘)
 5     for i in a:
 6         try:
 7             href = i.attrs[‘href‘]
 8             lst.append(re.findall(r‘[s][hz]\d{6}‘, href)[0])  #findall返回的是一个列表,所有这里[0]的作用就是append一个字符串,而不是一个列表进去
 9         except:
10             continue

2.3 获取股票信息

同样的原理,最后用字典来保存。

 1 def getStockInfo(lst, stockURL, fpath):
 2     for stock in lst:
 3         url = stockURL + stock + ".html"
 4         html = getHTMLText(url)
 5         try:
 6             if html == "":
 7                 continue
 8             infoDict = {}
 9             soup = BeautifulSoup(html, ‘html.parser‘)
10             stockInfo = soup.find(‘div‘, attrs={‘class‘: ‘stock-bets‘})
11
12             name = stockInfo.find_all(attrs={‘class‘: ‘bets-name‘})[0]
13             infoDict.update({‘股票名称‘: name.text.split()[0]})  #text是requests的方法
14
15             keyList = stockInfo.find_all(‘dt‘)
16             valueList = stockInfo.find_all(‘dd‘)
17             for i in range(len(keyList)):
18                 key = keyList[i].text
19                 val = valueList[i].text
20                 infoDict[key] = val
21
22             with open(fpath, ‘a‘, encoding=‘utf-8‘) as f:
23                 f.write(str(infoDict) + ‘\n‘)
24         except:
25             traceback.print_exc()
26             continue

原文地址:https://www.cnblogs.com/zyb993963526/p/9094862.html

时间: 2024-07-30 15:35:52

爬虫系列之股票信息爬取的相关文章

Python爬虫系列 - 初探:爬取旅游评论

Python爬虫目前是基于requests包,下面是该包的文档,查一些资料还是比较方便. http://docs.python-requests.org/en/master/ 爬取某旅游网站的产品评论,通过分析,获取json文件需要POST指令.简单来说: GET是将需要发送的信息直接添加在网址后面发送 POST方式是发送一个另外的内容到服务器 那么通过POST发送的内容可以大概有三种,即form.json和multipart,目前先介绍前两种 1.content in form Content

Python爬虫系列 - 初探:爬取新闻推送

Get发送内容格式 Get方式主要需要发送headers.url.cookies.params等部分的内容. t = requests.get(url, headers = header, params = content, cookies = newscookies) 基本上发送以上四个变量即可,以下是示例代码. url = 'https://weibo.com/a/aj/transform/loadingmoreunlogin' content = { 'ajwvr': 6, 'catego

Python爬虫实战二之爬取百度贴吧帖子

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht

转 Python爬虫实战二之爬取百度贴吧帖子

静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件

Python爬虫新手教程:爬取了6574篇文章,告诉你产品经理在看什么!

作为互联网界的两个对立的物种,产品汪与程序猿似乎就像一对天生的死对头:但是在产品开发链条上紧密合作的双方,只有通力合作,才能更好地推动项目发展.那么产品经理平日里面都在看那些文章呢?我们程序猿该如何投其所好呢?我爬取了人人都是产品经理栏目下的所有文章,看看产品经理都喜欢看什么. 1. 分析背景 1.1. 为什么选择「人人都是产品经理」 人人都是产品经理是以产品经理.运营为核心的学习.交流.分享平台,集媒体.培训.招聘.社群为一体,全方位服务产品人和运营人,成立8年举办在线讲座500+期,线下分享

# [爬虫Demo] pyquery+csv爬取猫眼电影top100

目录 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 代码君 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 https://maoyan.com/board/4?offset=0 翻页操作只会改变offset偏移量,每部电影的信息都在dd标签内,使用pyquery库中的css选择器直接解析页面 代码君 css选择器直接选择和使用find()方法的区别:find()用于选择子节点,因此限定了选择的区域,速度可能要快些,直接传入''选择器可能

爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 1. scrapy图片的爬取/基于管道类实现 2. 中间件的使用 3. selenium在scrapy中的应用 4. CrawlSpider 5. 分布式 5. 增量式 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 1. scrapy图片的爬取/基于管道类实现 爬取流程: 爬虫类中将解析到的图片

Python Scrapy的QQ音乐爬虫 音乐下载、爬取歌曲信息、歌词、精彩评论

QQ音乐爬虫(with scrapy)/QQ Music Spider 磁力搜索网站2020/01/07更新 https://www.cnblogs.com/cilisousuo/p/12099547.html UPDATE 2019.12.23 已实现对QQ音乐文件的下载,出于版权考虑,不对此部分代码进行公开.此项目仅作为学习交流使用,支持正版,人人有责 项目介绍 在写一个项目的时候需要用到一些音乐的信息,但是在网上找了许久也没找到满意的音乐语料,于是便用scrapy写了一个QQ音乐的爬虫 由

【Python3 爬虫】U28_多线程爬取斗图啦的表情包

目录 1.需求描述 2.实战代码 2.1 单线程爬取 2.2 多线程版 1.需求描述 爬取斗图啦网站,地址为:https://www.doutula.com/photo/list/[Python3 爬虫]U28_多线程爬取斗图啦的表情包 原文地址:https://www.cnblogs.com/OliverQin/p/12636681.html