如何将html网页中的数据提取出来保存在数据库中?
这种其实就是做一个采集工具了。
首先看你的需求,你需要采集一个网站的名称和价格然后和另一个网站做对比。
那么总结一下,也就是你需要采集两个网站的数据(对比其实就是按照名称关联一下)
在这里说一下爬虫的几个主要环节
1.网页内容获取(html获取)
获取的方法有很多种,最常见的就是直接通过get和post下载页面html,基本所有语言都有现成的可以调用,当然你也会遇到异步加载或者其他问题,这时候可以试着使用调用浏览器解决。
2.网页内容提取(你需要的名称和借个提取)
网页内容提取就是通过正则表达式或者xpath获取你需要的数据,这个应该不用我多说
3.提取内容入库(获取到的数据保存到表格或者数据库或者页面显示)
入库的话就看你使用什么样的形式了,一般会用轻量一点的数据库,这样之后对于比价(关联查询)也会比较方便。
需要用到的知识大概就是一点编程基础(看一些开源的爬虫程序),一些网络基础(抓包发包),会正则表达式或者xpath,有简单的数据库基础,这样感觉就差不多了。
当然现在网上的采集工具也很多,对于数据量不大或者采集比较简单的可以不用自己写程序,通过采集工具就可以完成。
怎么学网络爬虫?
网络爬虫,说的明白一些,就是一个数据采集的过程,解析网页、提取数据,下面我简单介绍一下学习网络爬虫的过程,主要内容如下:
1.基础的前端网页知识,这个是学习网络爬虫的基础,我们爬取的大部分网络数据都是存储在网页中,如果连基本的网页都看不懂,就无从爬取数据,不要求你对网页知识多么的熟悉、精通,最起码的html,css,js要能看懂,如果这些还不会的话,建议花个两三天学习一下:
2.要会抓包分析,使用开发者工具(按F12就行),有些网页数据是静态加载的,可以直接请求、解析页面,而有些页面数据是动态加载的,直接请求是获取不到的,这时就需要我们进行抓包分析,获取真实的数据文件,像json,xml等,然后才能解析,提取出我们需要的数据,如果还不熟悉开发者工具,建议学习一下,很简单,也不难:
3.再着就是编程爬取网络数据了,这个根据自己需求选择一门编程语言就行,java,python等都可以,如何没有任何编程基础的话,建议选择python,好学易懂、语法简单,非常适合初学者,有许多现成的爬虫包可直接利用,像urllib,requests,bs4,lxml等,使用起来非常方便,后期熟悉后,你也可以使用scrapy爬虫框架,效率会更高:
4.最后,就是存储爬取的数据了,数据量小的话,可以直接利用excel,csv等文件存储,要是数据量比较大的话,你还需要利用数据库进行存储,像mysql,mongodb等,有时间的话,建议可以学习一下:
目前就分享这么多吧,其实后面还有许多知识,像如何处理反爬,加密、验证码处理,分布式爬虫、存储等,都需要学习研究一下,感兴趣的话,可以搜一下相关资料和教程,网上也有介绍,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。
大数据时代,企业对数据的重视程度与日俱增。然而巧妇难为无米之炊,如果没有数据,再好的数据挖掘技术也变不出个花儿来。因此,能快速获取大量有效数据的企业,往往能在市场竞争中占得先机。
而爬虫,作为一种有效的数据获取手段,也得到了越来越多的瞩目。
我先假设题主是零基础,对编程和爬虫都没有太多认识。
首先,你需要掌握一门编程语言,目前最容易入门、应用最广的就是Python了。
然后你要了解爬虫是什么,了解一点HTML的基础知识,也就是说,给了你网页源码,你要大概知道它是个什么东西,因为从里边提取信息的时候,很多提取的库比如BeautifulSoup、XPath(在lxml里)、Selenium等都是需要使用者对HTML或者XML的结构有一定认识的。
接下来你需要学会使用常见的爬虫库。对于绝大多数简单的静态页面,使用urllib或者基于它的requests库就可以完成抓取了。当需要大规模应用时,可以考虑使用scrapy,它甚至支持分布式爬虫。有一些页面加了复杂的反爬虫策略,比如随机码或者验证信息等,这时可以使用Selenium来实现所见即所得的抓取程序。
获取到网页源码之后,就需要对它们进行解析。如上方所说,常见的解析库有re(正则表达式)、BeautifulSoup、lxml(使用XPath表达式)、pyquery,另外scrapy和selenium也都有自己的解析方法。
数据解析出来后,需要保存下来,一般可以保存到本地或者数据库中。推荐学习的库有csv、pandas、pymysql、pymongo等。
至于后续的分析,等你把这些掌握了,你自然就知道去哪里找分析需要使用的库了。
学习资料推荐崔静才的Python3爬虫书,可以网上搜索。也可以去我的个人博客,里边会有一些爬虫类的分享。数洞: www.data-insights.cn/www.data-insight.cn.

