Python数据爬取之0基础小白实战(二)初窥门槛

上一篇(一)软件安装我们说到,重装软件后解决了卡了两天的版本不匹配问题。

本篇“初窥门槛”记录我完成版本匹配后,学会获取url,学习谷歌Web Scraper插件并被劝退,成功识别网站“乱码”,逐渐跑通Python代码,完成程序架构设计的全过程。

任务描述

获取2015-2020年通过申请的国家科学自然基金中,E.工程与材料科学部下,E03.有机高分子材料及E05.机械设计与制造,这两子类的全部项目关键信息,并制为excel表。

经过广泛搜索,最终确定网站http://www.izaiwen.cn/为爬取对象,网站首页如下图所示。
Python数据爬取之0基础小白实战(二)初窥门槛_第1张图片

真实URL获取

在网站http://www.izaiwen.cn/选取相应学科分类和批准年限后,页面跳转但网站地址框中url仍为http://www.izaiwen.cn/,且每次查询最多显示前200条记录。
Python数据爬取之0基础小白实战(二)初窥门槛_第2张图片
查资料得知其真实url被隐藏,获取方式如下:

1.按F12或Fn+F12,进入开发者模式;选择学科类别和批准年限并查询;在Network选项卡的XHR子选项卡中找到最新出现的请求,在Headers子选项卡中可以找到被隐藏的url,并得知其请求方式为get。
Python数据爬取之0基础小白实战(二)初窥门槛_第3张图片
2.将获得的url复制到网页搜索框,回车弹出页面,认真分析其内容,可以确认该url真实有效。
http://www.izaiwen.cn/api/getlist?psnname=&orgname=&prjno=&type_name=&province=&totalamt_min=&totalamt_max=&subject_level1=E&subject_level2=E03&subject_level3=&subject_level4=&start_year=2015&end_year=2015&keyword=

Python数据爬取之0基础小白实战(二)初窥门槛_第4张图片

Web Scraper插件使用

此时广泛查询0基础爬虫教程,意外发现新手神器Web Scraper,这是谷歌自带的一款插件,功能强大,简单易上手,通过点点点就能完成数据爬取,门槛几乎为0.

Web Scraper Chrome 插件 V0.2.0.16下载地址:http://www.downxia.com/downinfo/162089.html
插件安装教程:https://www.cnblogs.com/web-scraper/p/web_scraper_download.html

通过教程:https://www.cnblogs.com/web-scraper/p/web_scraper_first_scrape_douban.html完成了对豆瓣首页的爬取,自以为已经出师,可以绕开Python的学习。

却在应用到对应网站时,同样的操作致使爬取结果为空,被火速劝退。
http://www.izaiwen.cn/api/getlist?psnname=&orgname=&prjno=&type_name=&province=&totalamt_min=&totalamt_max=&subject_level1=E&subject_level2=E03&subject_level3=&subject_level4=&start_year=2015&end_year=2015&keyword=

分析结果,在复选“批准年份”时,获得的表达式为td:nth-of-type(6),而在所爬取的页面html(其真实内容见:HTML“乱码”的转译)中并没有类似表式,故无法识别目标信息。
Python数据爬取之0基础小白实战(二)初窥门槛_第5张图片

HTML“乱码”的转译

认真分析下图所示“乱码”,数据规整,而"province":"\u5e7f\u4e1c"表达式中,似乎斜杠间分隔的是一个个汉字,以此为思路搜索Python爬虫获得乱码&中文等有关消息,意外发现中文的unicode编码和获得的HTML神似。
Python数据爬取之0基础小白实战(二)初窥门槛_第6张图片
在网站http://tools.jb51.net/transcoding/unicode_chinese提供的在线unicode转中文功能中,复制所获得的HTML并转译,成功翻译了HTML的真实含义。
Python数据爬取之0基础小白实战(二)初窥门槛_第7张图片

关键源代码的获取

在广泛搜索0基础Python爬虫教程的过程中,收获了几段能在我当前版本软件直接运行的宝贵源码,其中最重要的一段是:用Python从豆瓣首页爬取评分前250个的影片数据并导出到excel表。

我的代码除网页解析,正则表达式提取数据等部分外,几乎完全参考该程序。

关键源码参考地址:https://blog.csdn.net/bookssea/article/details/107309591
Python数据爬取之0基础小白实战(二)初窥门槛_第8张图片
至此,离目标完成只剩——通过正则表达式提取数据、将首页数据转化为中文写入列表、动态翻页、导出到excel等几块拼图。

小结

完成了版本匹配后,我用一天时间学会了寻找被隐藏的url、Web Scraper Chrome插件使用、破译了所获得HTML“乱码”的真实含义、找到了可供参考的关键源码,确定了凭当前知识用Python爬取完整项目信息的可行性,并完成了程序架构总体设计。

编程思路为:伪造请求头访问网页并传回HTML(编为函数备用)–> 正则表达式提取固定URL所对应HTML的关键信息 --> HTML的unicode转中文 --> 将中文数据导入列表 --> 破解url的表达方式并实现动态翻页 --> 将列表数据导出excel.

你可能感兴趣的:(Python,python,爬虫)