热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python网络爬虫并输出excel

python网络爬虫并输出excel,Go语言社区,Golang程序员人脉社



python网络爬虫并输出excel


    • Python版本与IDE
    • 网络爬虫
    • urllib模块
    • 爬取的网站
    • 分析网站
      • 获取所有股票id
      • 根据id获取股票信息
    • 输出到Excel


Python版本与IDE

笔者用的是python3.6.5以及PyCharm不得不说,JetBrains做的IDE都很不错,无论是这款PyCharm还是IntelliJ
在形参处的名称提示太方便了


网络爬虫

笔者学java的,本次写这个爬虫纯粹为了交作业
学过java的URL类的基本都明白
所为爬虫无非就是建立一个与某个网站的连接
通过该连接获取输入流,读取网站内容
实质上就是一个socket的输入输出操作,根据http状态码以及请求头里的信息,验证是否发送完毕(一般是200),结束连接
网络爬虫


urllib模块

本次使用的爬取类库是python3.6的一个标准库
urllib不依赖任何第三方库,无需安装
通过以下代码

req=urllib.request.Request(url,header)

可以得到一个HttpRequest对象
再通过以下代码,发出该请求并得到一个HttpResponse对象

res=urllib.request.urlopen(req,context)

以上代码中,如果是http:开头的网站header和context都可以省略,则采用默认参数
而对于https开头的网站,因为要进行证书验证
所以要创建一个带ssl证书的context并传入

context = ssl._create_unverified_context()

通过以下方式创建header来指定模拟爬虫的浏览器信息
并在网站支持国际化时指定语言为中文

header = {
'Accept': 'text/html, application/xhtml+xml, */*',
'Accept-Language': 'zh-CN',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
'DNT': '1',
'Connection': 'Keep-Alive',
}

通过得到的response对象的read方法会返回页面内容的byte数组
而我们需要的是字符串
所以使用decode方法,对byte数组编码并转换成字符串
而网络传输的数据格式是json,所以使用json模块的load方法将得到的数据转换为json对象
总结以上几步,我们封装一下爬取资源的方法

def getUrlJson(inUrl):
req = urllib.request.Request(url=inUrl, headers=webheader)
webPage = urllib.request.urlopen(req,context=context)
data = webPage.read().decode('utf-8')
data = json.loads(data)
return data

通过调用该函数

data = getUrlJson(Url)

这样就得到了网页的内容
有个bug,有时候爬取一些网站会提示页面中存在0x8b这个值不能编码为utf-8中的字符
笔者上网百度了很久,包括在stackOverflow上查看相关问题
发现没有真正能解决的,像(注释掉Accept-encode,不注释对压缩giz进行处理,都不能解决)
然后在PyCharm中进行运行居然又不报这个错了…
也希望知道这个bug解决方法的,联系笔者QQ1183609515,谢谢


爬取的网站

本次爬取的是选股宝这个股票网站上面所有股票的信息
作为一个股票网站,实时更新是必须的,所以肯定是个动态网站
选股宝https://xuangubao.cn/dingpan/
选股宝数据
爬取下来页面内容后,输出查看

print(data)

结果是这个


<html data-n-head-ssr data-n-head="">
<head>
<meta data-n-head="true" name="referrer" content="always">
<meta data-n-head="true" name="renderer" content="webkit">
<meta data-n-head="true" name="force-rendering" content="webkit">
<meta data-n-head="true" name="baidu-site-verification" content="GFgkG2X61Y">
<meta data-n-head="true" http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta data-n-head="true" charset="utf-8">
<meta data-n-head="true" name="viewport" content="token punctuation">">
<meta data-n-head="true" data-hid="description" name="description" content="选股宝,一款主打“主题投资”的A股资讯神器,每日根据用户个性化关注主题,推送最新、最快、最狠的消息,帮助第一时间抓住机会。">
<meta data-n-head="true" data-hid="keywords" name="keywords" content="选股宝,xuangubao.cn,主题投资,资讯,股票,板块,题材,产业链,主题库,今日机会,中长线机会,近期风口,提前埋伏">
<title data-n-head="true">选题材抓龙头,就用选股宝 xuangubao.cntitle>
<link data-n-head="true" rel="icon" type="image/x-icon" href="/img/favicon.ico">
<link data-n-head="true" rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_117096_dawtptwmkjawnrk9.css">
<link data-n-head="true" rel="stylesheet" type="text/css" href="//cdn.bootcss.com/minireset.css/0.0.2/minireset.min.css">
<script data-n-head="true" src="/js/qrcode.js">script>
<script data-n-head="true" src="https://polyfillservice.wallstreetcn.com/v2/polyfill.js?features=default,es6,es7,fetch&unknown=polyfill&flags=gated">script>
<link rel="preload" href="https://static-alpha.wallstreetcn.com/clay/manifest.1f6b2202e79ed3bc8f71.js" as="script">
<link rel="preload" href="https://static-alpha.wallstreetcn.com/clay/vendor.787b748b2aa791af3419.js" as="script">
<link rel="preload" href="https://static-alpha.wallstreetcn.com/clay/app.a93c21ff1869eac54397.js" as="script">
<link rel="preload" href="https://static-alpha.wallstreetcn.com/clay/app.a22dace7c29e562d6288b8728abc210f.css" as="style">
<link rel="preload" href="https://static-alpha.wallstreetcn.com/clay/layouts/default.c8fc2ca668da67a5522f.js" as="script">
<link rel="preload" href="https://static-alpha.wallstreetcn.com/clay/pages/dingpan/_id.a8362de5e835a04f692c.js" as="script">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/vip.cad641367f2be08dc49c.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/theme/_id.c2cc1b6f07508499d2a7.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/index.416454fc7d221d35ea69.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/zhangjiazaozhidao.66e109fd0a57268089a9.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/zaozhidao.fdf4f05456e0643e0f7d.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/tuoshuiyanbao.535cdaa72fdb33b1618c.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/tuoshuidiaoyan.914a90c524077a21b5c5.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/panzhongtufa.9b33803561c97b306e26.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/article/_id.3e1f7cf3ed25784ab36f.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/premium-article/_id.1d8c500639f65de2abc7.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/zhutiku.091e3e4f763c772dc931.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/purchased-message.362581f93699b6157764.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/subject/bkj/_id.cdc6888d383a44cb4697.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/yuanchuang.ecbabd7749a1994c6d4e.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/subject/_id.c5309899dee6e0d161e7.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/stock/_symbol.d82369e79268ab7033fb.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/chart.9d43c34c1e20b7540958.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/agreement.cbb1a7e2159afe928317.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/confirm-logout.2681979448cddb9bbea4.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/layouts/empty.3e708aa6c28c9df56ec8.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/zhuti/_id.580075df75bf6c81393a.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/ban/index.469b59d541cc54816be8.js">
<link rel="prefetch" href="https://static-alpha.wallstreetcn.com/clay/pages/ban/_id.7ea69e8444dc15b61cb5.js">
<link rel="stylesheet" href="https://static-alpha.wallstreetcn.com/clay/app.a22dace7c29e562d6288b8728abc210f.css">
<style data-vue-ssr-id="0780e740:0">.nav[data-v-789bdac6]{min-width:1200px;height:56px;line-height:56px;-webkit-box-shadow:0 2px 3px hsla(0,0%,4%,.1);box-shadow:0 2px 3px hsla(0,0%,4%,.1);background-color:#30333f;color:#fff}.nav .container[data-v-789bdac6]{width:1300px;margin:0 auto}.nav .nav-left[data-v-789bdac6]{float:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nav .nav-right[data-v-789bdac6]{float:right}.nav .nav-right .nav-item[data-v-789bdac6]{color:#fff}.nav .nav-right .go-login[data-v-789bdac6],.nav .nav-right .log-out[data-v-789bdac6]{cursor:pointer}.nav .nav-item[data-v-789bdac6]{position:relative;color:#d8d8d8;height:56px;line-height:56px;margin-right:40px;-webkit-transition:.3s;transition:.3s}.nav .nav-item[data-v-789bdac6]:hover{color:#fff}.nav .nav-item.is-active-route[data-v-789bdac6]{border-bottom:3px solid #e6394d;pointer-events:none;color:#fff}.nav .nav-item .is-hot[data-v-789bdac6]{width:25px}.nav .logo[data-v-789bdac6]{margin-right:81px}.nav .logo img[data-v-789bdac6]{width:108px;height:26px}.nav .slogan[data-v-789bdac6]{display:inline-block;text-indent:-9999px;width:0}@media screen and (max-width:1366px){.nav .container[data-v-789bdac6]{width:1200px}}style>
<style data-vue-ssr-id="17042f68:0">.nav-item[data-v-0a76a5aa]{cursor:pointer;margin:0 0 0 -13px!important;padding:0 40px 0 13px}.nav-item img[data-v-0a76a5aa]{vertical-align:middle;margin-top:-2px;margin-left:2px}.nav-dropdown[data-v-0a76a5aa]{display:none;position:absolute;top:56px;left:0;background-color:#fff;-webkit-box-shadow:0 0 12px 0 rgba(0,0,0,.3);box-shadow:0 0 12px 0 rgba(0,0,0,.3);z-index:1000}.nav-dropdown.is-active[data-v-0a76a5aa]{display:block}.nav-dropdown[data-v-0a76a5aa]:before{content:"";position:absolute;top:-10px;left:20px;border:5px solid #fff;border-color:transparent;border-bottom-color:#fff}.nav-dropdown li[data-v-0a76a5aa]{width:160px;height:48px;line-height:48px}.nav-dropdown li a[data-v-0a76a5aa]{display:block;padding-left:16px;color:#666}.nav-dropdown li:hover a[data-v-0a76a5aa]{color:#333;background-color:#f5f5f5}style>
<style data-vue-ssr-id="18e89e59:0">.ban[data-v-34069733]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;min-width:1280px;background:#292c33;min-height:100vh}.ban-main[data-v-34069733]{display:block;width:75%;min-width:1000px}.ban.simple .ban-main[data-v-34069733]{width:100%}.ban-chart-out[data-v-34069733]{width:100%;position:relative;background:#292c33;z-index:20}style>
<style data-vue-ssr-id="2b055f8b:0">.ban.normal .ban-table-tab.fixed,.ban.normal .hit-pool__table.table.fixed{max-width:auto;width:75%}.ban.simple .ban-chart,.ban.simple .ban-chart-out{width:1200px;margin:0 auto}.ban.simple .ban-table-tab{width:100%}.ban.simple .ban-table-tab .ban-table-tab-container{width:1200px;margin:0 auto;position:relative}.ban.simple .hit-pool__table.table.fixed{left:50%;margin-left:-600px}.ban.simple .ban-table-main{width:1200px;margin:0 auto;position:relative}@media screen and (max-width:1280px){.ban.simple{min-width:1000px}.ban.simple .ban-chart{width:1000px;margin:0 auto}.ban.simple .ban-table-tab{width:100%}.ban.simple .ban-table-tab .ban-table-tab-container{width:1000px;margin:0 auto;position:relative}.ban.simple .hit-pool__table.table.fixed{left:50%;margin-left:-500px}.ban.simple .ban-table-main{width:1000px;margin:0 auto;position:relative}.ban.simple .ban-chart-out{width:1000px;margin:0 auto}}.guide{position:fixed;top:0;bottom:0;left:0;right:0;z-index:9999;background:#262c32;overflow:scroll}.guide-container{width:

推荐阅读
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 标题: ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
author-avatar
快乐每一天Everyone
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有