爬取深市上市公司信息

从安装python开始最基本的语法到开始在网上爬取信息才过去一周,好多东西还没有系统的学习,没有太深的见解,还需继续努力。

1. 开发环境的配置

所安装的python版本是3.6,关于各种库的安装,参考了《Python3网络爬虫开发实战》。
所涉及的库:

  • Selenium
    其是自动化测试工具,可以实现驱动浏览器执行特定动作。
    下载地址

  • Chrome 谷歌浏览器(现在的chromedriver可以支持到69版本)

  • ChromeDriver
    chromeDriver下载地址
    找到浏览器对应的版本下载,解压后将chromedriver.exe 移动到Python 安装目录下的Scripts 目录下。

  • pyquery 网页解析工具,pip install pyquery 即可
    对于数据的存储采用的是将数据存放到.csv 文件中。

2. 所爬网址分析

对于上市公司的信息,证监局制定了几个网站,我采用的是巨潮资讯网址主要是为了学习初步简单的爬虫,也可以用其他的网站。这个网页的信息是公司代码和名称的列表。

我的思路是先试着爬取这个页面下800多个公司的信息,得到了这些公司的代码(000001),再去右上方的位置输入并搜索。最后发现
搜索之后的网址是:http://www.cninfo.com.cn/cninfo-new/snapshot/companyDetailCn?code=000001,发现所有的公司信息页面的Url只是最后的code=? 不同,所以可以拿着代码分别去展示公司信息的页面爬取。

from selenium import webdriver
from pyquery import  PyQuery as pq
from  selenium.webdriver.support.wait import  WebDriverWait
from  selenium.webdriver.support import  expected_conditions as EC
from  selenium.webdriver.common.by import By
import csv
browser = webdriver.Chrome()wait =WebDriverWait(browser, 3) #等待时间
def id_get():# 中国证监会网址首页browser.get('http://www.cninfo.com.cn/cninfo-new/snapshot/companyListCn')# 从网页中爬出来 上市公司代码 和公司名 存到csv中doc = pq(browser.page_source)item = doc('.company-list')lis= item.children()#print(lis)#获取信息with open('data.csv', 'w', encoding='utf-8', newline='') as csvfile:writer=csv.writer(csvfile)writer.writerow(['id', 'name'])for tag in lis.items():print(len(tag.text()))str1,str2 = str(tag.text()).split('\xa0')#print(str[0:6])writer.writerow([str1, str2])

doc中参数是根据网页的代码,所要爬取的信息在ul class=”“company-list>li…/li><.ul 中。

3. 信息的存取


可以看到,公司的成立日期,邮箱等等都在table 中,类似的直接定位到 tr class=“evenrowcolor” 上,

def info_get(id):print('正在爬取公司的代码是:', id)#输入代码查询网页try:purl = 'http://www.cninfo.com.cn/cninfo-new/snapshot/companyDetailCn?code='+idbrowser.get(purl)wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.cn')))#定位节点'''input = browser.find_element_by_id('hdy-input')input.send_keys('000001')button = browser.find_element_by_class_name('search-button')button.click()'''doc = pq(browser.page_source)# 获取公司名name = doc('.middle-name')#print(name.text())# 定位到td所在点information = doc('.evenrowcolor .text-align-left')# 成立日期 邮箱 网址 电话date = information.eq(1)mail = information .eq(3)internet = information.eq(5)phone = information.eq(7)info2 = doc('.oddrowcolor .text-align-left')address = info2.eq(5)# 存入文件和爬取id时相似print(name.text(), date.text(), mail.text(), internet.text(),  phone.text(), address.text())except TimeoutError:info_get(id)

所注意的是,class=“evenrowcolor” 不是只有一个标签,所以首先定位到 这些td上,并且 成立日期,1987/12/22 这两个标签都不能直接区分出来,所以用date = information.eq(1) 来选择所需的节点。

正在爬取公司的代码是: 000001
平安银行股份有限公司 1987/12/22 pabdsh@pingan.com.cn www.bank.pingan.com (+86)755-82080386 广东省深圳市罗湖区深南东路5047号
正在爬取公司的代码是: 000002
万科企业股份有限公司 1984/05/30 IR@vanke.com www.vanke.com (+86)755-25531696 广东省深圳市盐田区大梅沙环梅路33号万科中心
正在爬取公司的代码是: 000006
深圳市振业(集团)股份有限公司 1989/04/01 szzygp@126.com www.zhenye.com (+86)755-25863012 广东省深圳市罗湖区宝安南路2014号振业大厦B座11-17层
正在爬取公司的代码是: 000008
神州高铁技术股份有限公司 1989/10/11 houxiaojing@vip.163.com www.shenzhou-gaotie.com (+86)10-56500561 北京市海淀区高梁桥斜街59号院1号楼16层1606
正在爬取公司的代码是: 000009
中国宝安集团股份有限公司 1983/07/06 zgbajt@163.net www.chinabaoan.com (+86)0755-25170300、0755-25170367 广东省深圳市笋岗东路1002号宝安广场A座28-29层
正在爬取公司的代码是: 000011

问题:虽然很简单,但对于库的使用不够熟练,并且这个网页的节点并不是都有id或class来区分它们,需遍历相同的节点。在代码中经常print出当前所定位的网页代码可以帮助你更快的找到正确的节点。

记第一次爬虫 python3.6+pyquery相关推荐

  1. 记fofa爬虫工具开发篇

    记fofa爬虫工具开发篇 前沿 开发这个工具的原因单纯是在 大一(目前已经大三了)的时候 ,在用fofa搜索时,只能 搜索到 前 5 页,而且 github 上也找不到一个好点的爬虫,全是需要 会员的 ...

  2. 爬虫解析利器PyQuery详解及使用实践

    作者:叶庭云 整理:Lemon 爬虫解析利器 PyQuery详解及使用实践 之前跟大家分享了 selenium.Scrapy.Pyppeteer 等工具的使用. 今天来分享另一个好用的爬虫解析工具 P ...

  3. beautifulsoup网页爬虫解析_Python爬虫神器:PyQuery,解析网页更简单,小白也能学会

    图/文:迷神 我们做python爬虫,通过requests抓取到内容就需要正则匹配,或者其他解析库解析内容.很多可能和我一样的人,都使用jquery的,那用的还是非常爽的.而pyquery库就是jQu ...

  4. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  5. 记第一次使用CDSN进行学习记录

    记第一次使用CDSN进行学习记录 先立个flag: 目标使用R进行数据可视化及简单数据分析.熟练使用SAS进行数据管理,分析. 再立flag: 尽量每周五更新 以下markdown小技巧保留,方便查看 ...

  6. 记第一次使用tiptap踩的坑

    记第一次使用tiptap踩的坑 引入tiptap之后直接报错Duplicate use of selection JSON ID cell 局部引用报错 样式问题 引入tiptap之后直接报错Dupl ...

  7. 动漫之家《妖神记》爬虫(2021-01-09)

    动漫之家<妖神记>爬虫 目标:动漫之家<妖神记>爬虫,听课习作 目标网址:https://www.dmzj.com/info/yaoshenji.html 主要知识 --自动判 ...

  8. python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  9. Python爬虫辅助利器PyQuery模块的安装使用攻略

    这篇文章主要介绍了Python爬虫辅助利器PyQuery模块的安装使用攻略,PyQuery可以方便地用来解析HTML内容,使其成为众多爬虫程序开发者的大爱,需要的朋友可以参考下 Windows下的安装 ...

最新文章

  1. java person抽象类_java 抽象类
  2. RISV-V未来将面临怎样的挑战?
  3. 没有找到mysql。sock_linux系统安装mysql数据库
  4. web复习day03:request
  5. 【USACO Mar08】 奶牛跑步 A-star k短路
  6. 树莓派wifi环境下初始化及环境配置
  7. 采用流水线技术实现8位加法器
  8. 方舟服务器建家位置,《方舟 生存进化》最佳建家位置,新手玩家根本无法想象!...
  9. Jquery怎样返回上一页
  10. VVC专利池最新进展:MC-IF正在召集专利拥有者
  11. Win7旗舰版系统网页显示不全怎么办
  12. 20181220 Oracle程序包基本开发逻辑
  13. 关于用C#编写ActiveX控件1
  14. bash shell之数组使用
  15. 谈谈数字货币交易系统的发展
  16. go语言实现家庭收支记账本
  17. 计算机动画制作 课件,第四章 计算机动画的制作与编辑-课件(PPT).ppt
  18. Kindle:电子书资源
  19. JavaWeb随手笔记
  20. css实现波浪球效果图,用css实现圆形波浪效果图

热门文章

  1. php_excel表中_如何自动将多行中文转换成拼音,excel表格怎样设置批量将汉字变成拼音...
  2. centos8调整分辨率
  3. double scanf输入时用%lf而printf用%f或%lf原理
  4. 命令行 笔记本键盘禁用_笔记本触控板怎么关
  5. python 将小图放入较大的白色或黑色背景图片
  6. i386 Linux内核进入保护模式引导流程
  7. 黑客术语大全及其解释
  8. 2023 新年祝福贺卡网站HTML源码
  9. java中集合什么时候有索引,JavaSE中Collection集合框架學習筆記(1)——具有索引的List...
  10. #7 实现指定函数printSize