上次推文介绍了爬取新三板挂牌公司数据列表的过程和源代码。在上次推文的基础上,本篇文章将讲述如何爬取新三板挂牌公司的详细信息。

1.分析页面地址信息

在进行爬虫命令编写前,最重要的一个步骤是对数据的真实网络地址信息进行分析。首先在东方财富网数据中心→公司挂牌列表下找到挂牌公司明细,然后点击右侧的其中一家公司的公司代码链接到公司详情页,找到公司介绍栏目,发现公司介绍栏目中包含了两个子模块证券资料公司资料,这两个子模块的内容即是要爬取的公司详细信息。以华峰动力为例,发现该挂牌公司对应的公司详细信息页面地址为http://xinsanban.eastmoney.com/F10/CompanyInfo/Introduction/873320.html,分析后发现,该地址信息包含了公司代码。在挂牌公司明细中我们点击并链接到另一家挂牌公司的详细信息,发现,该页面地址的前半部分和华峰动力完全一样,改变的知识地址信息中的公司代码部分。由此推断,公司详细信息页面地址有一串固定字符串和公司代码信息组成。查看公司详细信息页,发现源代码中包含了我们要爬取的信息。由此,确定了要爬取的真实信息地址及其构成。

2.导入需求库。

requests库:用于网络请求
csv库:用于csv文件的读取于写入
time库:用于时间管理和cpu休眠
random库:用于生成随机数
sys库:用于处理异常时退出
bs4中的BeautifulSoup模块:解析页面

import requests,csv,time,random,sys
from bs4 import BeautifulSoup as bs

3.编写实现函数

python不仅可以直接调用内置函数以及内置库中的函数,而且可以调用第三方函数,更重要的是,构造自己的函数对python来说相当简单。通过构造自己的函数,我们能够实现一些相对复杂而又特殊的功能,更重要的是构造函数非常灵活,而且能够使得程序逻辑更为简洁易懂,程序的复用性更高。因此,本文在爬取新三板挂牌公司的详细信息时通过构造几个功能各异的函数来满足要求。

请求页面函数

def get_html(url):#请求时附加额外信息(params)headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}try:html = requests.get(url,headers=headers,timeout = 5)return htmlexcept Exception as e:print(url,'不能连接服务器')sys.exit(0)

解析页面函数

def html_parse():html = get_html(url)# 创建bs对象soup = bs(html.text,'lxml')# 获取公司信息com_left_info = soup.find_all('span',{'class','company-page-item-left'})  #company_left_info为bs4.element.ResultSet"""item_left = []for i in range(len(com_left_info)):#print(com_left_info[i].get_text())item_left.append(com_left_info[i].get_text())"""item_right =[]com_right_info = soup.find_all('span',{'class','company-page-item-right'}) for k in range(len(com_right_info)):#print(com_right_info[k].get_text())item_right.append(com_right_info[k].get_text())# 返回一个元组(a,b),也可以返回一个列表[a,b]return item_right

写入信息函数

def write_to_csv():print('数据写入中...')tup = html_parse() # 返回的是元组li = list(tup)with open('D:/new_three/companyinfo.csv','a',newline='') as csvfile:writer  = csv.writer(csvfile)writer.writerow(li)csvfile.close()

读取公司代码函数

def read_csv():with open('D:/new_three/新三板数据.csv','r',newline='') as csvfile:reader = csv.reader(csvfile)for row in reader:yield row[0].replace('.OC','')

生成地址函数

def  com_url():baseurl = 'http://xinsanban.eastmoney.com/F10/CompanyInfo/Introduction/'cominfo = []for k in read_csv():cominfo_url = baseurl+str(k)+'.html'cominfo.append(cominfo_url)return cominfo #返回一个迭代

页面主体

if __name__=='__main__':for url in com_url():write_to_csv()

4.总结

.通过构造五个函数和页面主体,我们已经成功地实现了构造地址信息到请求网页,解析网页、写入文件的全部过程。虽然爬虫相对简单,但却非常有效,希望通过本次推文,大家对编写爬虫能够有进一步的了解。
以下奉上全部代码以供各位学习参考

import requests,csv,time,random,sys
from bs4 import BeautifulSoup as bsdef get_html(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}try:html = requests.get(url,headers=headers,timeout = 5)return htmlexcept Exception as e:print(url,'不能连接服务器')sys.exit(0)def html_parse():html = get_html(url)soup = bs(html.text,'lxml')com_left_info = soup.find_all('span',{'class','company-page-item-left'})  #company_left_info为bs4.element.ResultSetitem_right =[]com_right_info = soup.find_all('span',{'class','company-page-item-right'}) for k in range(len(com_right_info)):item_right.append(com_right_info[k].get_text())# 返回一个元组(a,b),也可以返回一个列表[a,b]return item_rightdef write_to_csv():print('数据写入中...')tup = html_parse() # 返回的是元组li = list(tup)with open('D:/new_three/companyinfo.csv','a',newline='') as csvfile:writer  = csv.writer(csvfile)writer.writerow(li)csvfile.close()def read_csv():with open('D:/new_three/新三板数据.csv','r',newline='') as csvfile:reader = csv.reader(csvfile)for row in reader:yield row[0].replace('.OC','')def  com_url():baseurl = 'http://xinsanban.eastmoney.com/F10/CompanyInfo/Introduction/'cominfo = []for k in read_csv():cominfo_url = baseurl+str(k)+'.html'cominfo.append(cominfo_url)return cominfo #返回一个迭代if __name__=='__main__':for url in com_url():write_to_csv()

如何爬取新三板数据(二)相关推荐

  1. 如何爬取新三板数据库(一)

    如何爬取新三板数据(一) 新三板数据是实证分析中较常用到的一个数据库,其包含了一万多家挂牌中小企业,涵盖了制造业,交通运输,现代信息服务,文化服务,商业服务等除第一产业外的几乎全部国民行业.新三板挂牌 ...

  2. python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本文主要介绍破解反爬,可以先去上一篇观看爬取无反爬内容 python战反爬虫:爬取猫眼电影数据 (一)(Requests, Beauti ...

  3. python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本篇文章未涉及猫眼反爬,主要介绍爬取无反爬内容,战反爬内容请去 python战反爬虫:爬取猫眼电影数据 (二)(Requests, Be ...

  4. python战反爬虫:爬取猫眼电影数据 (一)

    非常荣幸邀请到 赛迪人工智能大赛(简称AI世青赛)全球总决赛银奖的获得者 隋顺意 小朋友为本公众号投稿,隋小朋友虽然小小年纪,但编程能力已经比大多数大学生强非常多了,欢迎大家关注,捧场. 姓名:隋顺意 ...

  5. python爬取新冠状病毒实时数据,绘制各省份疫情地图

    想法: 偶然接触爬虫之后,想要试试爬取新冠状病毒的数据,但本人是编程小白,只能从网上寻找代码进行学习,在看过博主Hakuna_Matata_001的代码之后,可以说是将其默写出来了,然后加入了自己的一 ...

  6. [Python爬虫]爬取新浪理财师股票问答

    本文将与大家分享如何爬取新浪理财师股票问答. 一.背景介绍 1)爬取顺序: 在这里,根据已有的股票id列表,按照顺序,依次爬取每只股票下面的股票问答. 股票id格式: lines = ['300592 ...

  7. 使用python爬取高德POI数据,并转换为WGS84经纬度坐标的点矢量

    一,爬取高德POI数据(高德开放平台接口+ Python) 参考记者博客https://blog.csdn.net/hxx099/article/details/88974264 1,申请高德开放平台 ...

  8. 爬取 bilibili 纪录片数据数据可视化

    爬取 bilibili 纪录片数据&数据可视化 说起纪录片就不得不提拉我入坑"冰冻星球"."地球脉动"等国外神作,但是说到中国的纪录片,除了" ...

  9. python爬取网页json数据_python爬取json数据库

    手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二. ...

最新文章

  1. 云消防大数据_大数据在智慧消防中的应用
  2. MMD的unity导入插件
  3. UBUNTU : Destination Host Unreachable
  4. Navicat for MySQL 使用SSH方式链接远程数据库
  5. mac下java环境变量配置
  6. UI帮手|小样机大作用
  7. 使用vue-cli4.5.x快速搭建项目
  8. 思科安全代理 CSA 概述
  9. java在数组中放入随机数_如何在Java中随机播放数组
  10. 【转】LPCTSTR,LPWSTR, PTSTR, LPTSTR区别
  11. 正本清源:LBS(基于位置服务)技术——高精准IP地址定位的8大误区(上)
  12. 基础算法matlab
  13. FileZilla查看站点隐藏文件
  14. masm 16位汇编语法
  15. 友盟朋友圈社区使用详解-(无UI版)
  16. java8的LocalDateTime获取当前月的第一天与最后一天
  17. 为什么 ERP 系统的用户体验不好?
  18. 公司官网产品爬取写入ES
  19. 直线电机模组在轨道交通(地铁轻轨磁浮)行业应用和发展优势
  20. MATLAB运用——计算三维物体的质心(水花号)

热门文章

  1. ppt打印铺满纸张时的设置方法
  2. 九校联考-长沙市一中NOIP模拟Day1T1 矩阵游戏(game)
  3. AI成为硬件增效“杀手锏”,百度输入法的「To B」探索
  4. 微信步步为营,百度节节溃败
  5. flutter EventBus
  6. 2021年1月全球最畅销智能手机排行榜出炉
  7. python集合优化实践
  8. 阿里巴巴从云第一到AI第一的必然性
  9. 头顶技术价格两座大山 OLED揠苗助长前景蒙忧
  10. html的表单与按钮学习