Ⅰ 如何“爬数据

简单笼统的说,爬数据搞定以下几个部分,就可以小打小闹一下了。
一、指定URL的模式,比如知乎问题的URL为http://hu.com/question/xxxx,然后抓取html的内容就可以了。用的工具,如果你正则很好,可以用正则,觉得正则费脑子的,可以用html解析DOM节点来处理内容。如果你抓取的内容有其固有特点,如新闻内容,可以用正文抓取算法,其实就是找html中最长的几行字符串。

二、用javascript动态生成内容的抓取,不建议使用headless,效率比较低下,建议使用一些开源的库去直接执行js代码,获得你想要的结果。
了解页面里的程序逻辑是很重要的,知道动态内容是怎么生成的,使用一定的方法,一样会像拿html一样,很容易的拿到你想要的结果。动态生成要么是本地执行计算,要么是从服务器另发起请求获得一定的结果,显示或再进行本地计算。对前者,你要找到他本地执行的那段代码,原样拿过来,在javascript环境执行一遍拿到结果。对后者,找到那个请求,获得对应的结果,一般这个结果也会是javascript代码或者json格式的字符串,重新解析即可。

三、登录,有很多数据你是需要登录后才能查看的。如果对方使用https,基本就无解了。好在很多国内标榜全站使用https的网站都是伪https,抓包一样全都可以抓到,比较复杂的会将用户名或密码进行二次加密,并且和时间相关,直接提交用户名密码是无效的,必须同时提交以当前时间为参数进行二次加密后的结果,还是那句话,了解页面里的程序逻辑是很重要的。

四、验证码,你抓取过多过快时,网站一般会要求你输入验证码证明你不是程序,是人工在操作,似乎国内有帮你输入验证码的云服务,来搞定这部分,或者用程序解析验证码,但错误率太高。还有一种比较无赖的方法就是使用多条ADSL或VPN,来回切换IP,不断换IP进行抓取,把单IP抓取速度控制在网站允许的范围内,另外什么换header头里的agent啥的比较简单,就不多说了。

五、内容图片化,一些敏感信息,如商城里的价格,分类网站里的用户手机号,会被网站直接用图片的方式进行显示。这里你使用云服务成本太高,使用程序解析图片,如果出错,这条信息基本就没用了,切换IP也一样是图片,所以基本也是无解的。

六、补充,爬虫还有很多细节和针对性的处理方法,出于学习的目的,要多思考,比如移动互联网这么火热,很多网站,有点实力的都会出移动客户端,在移动客户端内,他还是使用图片显示吗?现在html5出来了,很多移动客户端都是html+js进行再封装处理的。

Ⅱ js如何连接和操作腾讯云mysql数据库

首先是登陆腾讯云,登陆之后可以领取新手礼包,如图

二、使用一个demo来说明如何操作云mysql数据库

    1.在实例上上新建一个为nodejs的数据库,然后新建一个为employee的表,新建四个字段 name sex age email除了年龄为int其它的全部为varchar格式
    2.新建一个TimLiu的文件夹,打开cmd,cd TimLiu, 初始化项目npm init ,按照它的提示一步一步的操作即可,安装mysql模块,npm insitall mysql, 这个模块的作用主要是连接mysql数据库。
    3.新建一个model.js 文件,

  • var mysql = require(‘mysql’);

  • var connection = mysql.createConnection({

  • host:'',

  • user:'root',

  • password:'123abc',

  • database:' nodejs',

  • port:6445

  • })

  • connection.connect();

  • 这里的host为我们在腾讯云上开通的外地址,端口号也是在外网地址里面,注意要把外网地址写分开,用户为默认的管理员用户,密码为我们在云平台上设置的密码,数据库为我们创建的nodejs数据库。
    接下来我们对数据库进行增删改查操作

  • /**

  • * 增加员工

  • */function addEmployee(){

  • var employeeInsertSql = 'INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)';

  • var employeeInsertSql_Params = ['Tim','男',22,'[email protected]']

  • connection.query(employeeInsertSql,employeeInsertSql_Params,function(err,result){

  • if(err) console.log('[INSERT ERR]-',err.message);

  • console.log(result);

  • }) }addEmployee()

  • }

  • /**

  • * 更新员工

  • */

  • function insertEmployee(){

  • var employeeUpdateSql = "UPDATE employee SET name = ? WHERE age =?";

  • var employeeUpdateSql_Params = ['Peter',22];

  • connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){

  • if(err) console.log('[UPDATE ERR]-',err.message);

  • console.log(result);

  • })}



  • insertEmployee();

  • /**

  • *查询员工

  • */ function getEmployee(){

  • var employeeGetSql = "SELECT * FROM employee";

  • connection.query(employeeGetSql,function(err,result){

  • if(err) console.log('[SELECT ERR]-',err.message);

  • console.log(result);

  • })}

  • getEmployee();

  • /**

  • *删除员工

  • */ function deleteEmployee(){

  • var employeeDeleteSql = "DELETE employee WHERE name = ?";

  • var employeeDeleteSql_Params = 'Peter';

  • connection.query(employeeDeleteSql,employeeDeleteSql_Params,function(err,result){

  • if(err) console.log('[DELETE ERR]-',err.message);

  • console.log(result);

  • })

  • }deleteEmployee();

  • 这样我们就可以愉快的操作数据库了

    如果大家想把项目更模块化操作,可在model下面新建一个employee_two.js,代码如下

  • var mysql = require('mysql');var connection = mysql.createConnection({

  • host:'',

  • user:'root',

  • password:'',

  • database:'nodejs',

  • port:})connection.connect();/**

  • * 增加员工

  • * @param {String} employee

  • * @param {Function} callback

  • */exports.addEmployee=function(employee,callback){

  • var employeeInsertSql = 'INSERT INTO employee(name,sex,age,email) VALUES(?,?,?,?)';

  • var employeeInsertSql_Params = [employee.name,employee.sex,employee.age,employee.email]

  • connection.query(employeeInsertSql,employeeInsertSql_Params,callback)}/**

  • * 更新员工

  • * @param {String} employee

  • * @param {Function} callback

  • */exports.updateEmployee = function(name,age){

  • var employeeUpdateSql = "UPDATE employee SET name = ? WHERE age =?";

  • var employeeUpdateSql_Params = ['Peter',22];

  • connection.query(employeeUpdateSql,employeeUpdateSql_Params,function(err,result){

  • if(err) console.log('[UPDATE ERR]-',err.message);

  • console.log(result);

  • })}/**

  • * 查询员工

  • *

  • */exports.getEmployee = function(){

  • var employeeGetSql = "SELECT * FROM employee";

  • connection.query(employeeGetSql,callback)}/**

  • * 删除员工

  • * @param {String} name

  • */exports.deleteEmployee = function(name){

  • var employeeDeleteSql = "DELETE employee WHERE name = ?";

  • var employeeDeleteSql_Params = 'Peter';

  • connection.query(employeeDeleteSql,employeeDeleteSql_Params,callback)

  • }再在根目录下新建index.js,代码如下var db = require('./model/employee_two');//增加员工var employee = {

  • name:'lisa',

  • age:22,

  • sex:"女",

  • email:'[email protected]'}db.addEmployee(employee,function(err,result){

  • if(err) console.log("[INSERT err]-",err.message)

  • console.log(result);})//删除员工db.deleteEmployee('Peter',function(err,result){

  • if(err) console.log("[DELETE err]-",err.message)

  • console.log(result);})//更新员工db.updateEmployee('Tim',23,function(err,result){

  • if(err) console.log("[UPDATE err]-",err.message)

  • console.log(result);})//查询员工db.getEmployee(function(err,result){

  • if(err) console.log("[GET err]-",err.message)

  • console.log(result);})

Ⅲ 数据采集的数据源有哪些

从数据采集角度来说,都有哪些数据源呢?
这四类数据源包括了:开放数据源、爬虫抓取、传感器和日志采集
开放数据源一般是针对行业的数据库。国内,贵州做了不少大胆尝试,搭建了云平台,逐年开放了旅游、交通、商务等领域的数据量
爬虫抓取,一般是针对特定的网站或 App。如果我们想要抓取指定的网站数据,比如购物网站上的购物评价等,就需要我们做特定的爬虫抓取。
第三类数据源是传感器,它基本上采集的是物理信息。比如图像、视频、或者某个物体的速度、热度、压强等。
最后是日志采集,这个是统计用户的操作。我们可以在前端进行埋点,在后端进行脚本收集、统计,来分析网站的访问情况,以及使用瓶颈等

如何使用开放数据源
一个是单位的维度,比如政府、企业、高校;一个就是行业维度,比如交通、金融、能源等领域
如何使用爬虫做抓取
在 Python 爬虫中,基本上会经历三个过程。
1、使用 Requests 爬取内容。我们可以使用 Requests 库来抓取网页信息。Requests 库可以说是 Python 爬虫的利器,也就是 Python 的 HTTP 库,通过这个库爬取网页中的数据,非常方便,可以帮我们节约大量的时间。
2、使用 XPath 解析内容。XPath 是 XML Path 的缩写,也就是 XML 路径语言。它是一种用来确定 XML 文档中某部分位置的语言,在开发中经常用来当作小型查询语言。XPath 可以通过元素和属性进行位置索引。
3、使用 Pandas 保存数据。Pandas 是让数据分析工作变得更加简单的高级数据结构,我们可以用 Pandas 保存爬取的数据。最后通过 Pandas 再写入到 XLS 或者 MySQL 等数据库中。
Requests、XPath、Pandas 是 Python 的三个利器。当然做 Python 爬虫还有很多利器,比如 Selenium,PhantomJS,或者用 Puppteteer 这种无头模式。