如何“爬数据”

2024-05-19 23:36

1. 如何“爬数据”

  简单笼统的说,爬数据搞定以下几个部分,就可以小打小闹一下了。
  一、指定URL的模式,比如知乎问题的URL为http://zhihu.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进行再封装处理的。

如何“爬数据”

2. 如何让网页被爬虫抓取?

网站建设好了,当然是希望网页被搜索引擎收录的越多越好,但有时候我们也会碰到网站不需要被搜索引擎收录的情况。
比如,要启用一个新的域名做镜像网站,主要用于PPC 的推广,这个时候就要想办法屏蔽搜索引擎蜘蛛抓取和索引我们镜像网站的所有网页。因为如果镜像网站也被搜索引擎收录的话,很有可能会影响官网在搜索引擎的权重。
以下列举了屏蔽主流搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路。注意:是整站屏蔽,而且是尽可能的屏蔽掉所有主流搜索引擎的爬虫(蜘蛛)。
1、通过 robots.txt 文件屏蔽
可以说 robots.txt 文件是最重要的一种渠道(能和搜索引擎建立直接对话),给出以下建议:
User-agent: Baiduspider
Disallow: /
User-agent: Googlebot
Disallow: /
User-agent: Googlebot-Mobile
Disallow: /
User-agent: Googlebot-Image
Disallow:/
User-agent: Mediapartners-Google
Disallow: /
User-agent: Adsbot-Google
Disallow: /
User-agent:Feedfetcher-Google
Disallow: /
User-agent: Yahoo! Slurp
Disallow: /
User-agent: Yahoo! Slurp China
Disallow: /
User-agent: Yahoo!-AdCrawler
Disallow: /
User-agent: YoudaoBot
Disallow: /
User-agent: Sosospider
Disallow: /
User-agent: Sogou spider
Disallow: /
User-agent: Sogou web spider
Disallow: /
User-agent: MSNBot
Disallow: /
User-agent: ia_archiver
Disallow: /
User-agent: Tomato Bot
Disallow: /
User-agent: *
Disallow: /
2、通过 meta tag 屏蔽
在所有的网页头部文件添加,添加如下语句:

3、通过服务器(如:Linux/nginx )配置文件设置
直接过滤 spider/robots 的IP 段。
小注:第1招和第2招只对“君子”有效,防止“小人”要用到第3招(“君子”和“小人”分别泛指指遵守与不遵守 robots.txt 协议的 spider/robots),所以网站上线之后要不断跟踪分析日志,筛选出这些 badbot 的ip,然后屏蔽之。

3. 如何学习爬虫技术抓取数据

学习任何一门语言都是从入门,通过不间断练习达到熟练水准,少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层。 
当你决定学Python爬虫时,需要有一个清晰且短期内可实现的目标,比如通过学习找一份初级程序员工作。目标明确后,你需要知道企业对Python程序员的技能有哪些要求。
可能你会纠结是学Python2还是Python3,就像手里同时有包子和馒头,不知道先吃哪个,这种纠结完全就是徒增烦恼。
因为它们是同一种语言,只有少部分地方语法不兼容。Python3逐渐成为主流已是不争事实,毕竟后者性能方面更占有优势,官方也在力推Python3。所以选Python3吧,最多花一天的时间能把Python2中特有的内容搞懂。
至于有哪些资源现在可以用,你可以积极参与到相关的技术圈子中去,尝试去解答力所能及的新手问题,向圈子中的大牛们寻求帮助,善于总结自己所学到的东西,分享给更多的人。记住,你不是一个人在战斗!
只看书不会进步,思考和实践才有成长,自学编程是一个比较枯燥的过程,一定要坚持。
哦对了,目前我也在学习,你可以看一下这个基础视频,很有帮助的。
python基础视频教程

如何学习爬虫技术抓取数据

4. 如何让爬虫快速抓取我们网站的重要页面

爬虫就是自动提取网页的程序,如百度的蜘蛛等,要想让自己的网站更多页面被收录,首先就要让网页被爬虫抓取。
如果你的网站页面经常更新,爬虫就会更加频繁的访问页面,优质的内容更是爬虫喜欢抓取的目标,尤其是原创内容。
如果你做了许多努力仍没有被爬虫抓取,可以看一下老渔哥给出的两点建议:
1、不建议站点使用js生成主体内容,如过js渲染出错,很可能导致页面内容读取错误,页面则无法被爬虫抓取。
2、许多站点会针对爬虫做优化,建议页面长度在128k之内,不要过长。

5. 什么情况下网页爬虫可能是你获取数据的手段

爬虫是目前主流的数据获取方式,可获取的数据大致有:

1.图片、文字、视频会抓取产品评论和各种图片网站,获取图片资源和评论文字资料。
2.作为机器学习和数据挖掘的原始数据,比如你想建立一个推荐系统,可以爬取更多维度的数据,建立更好的模型。
3.进行市场调查和商业分析,搜索优质答案,筛选优质内容;搜索房产网站信息,分析房价走势,分析不同区域房价;抓取招聘网站上的职位信息,分析各行业的人才需求和薪资水平。

什么情况下网页爬虫可能是你获取数据的手段

6. 03-Python零基础入门爬虫开发-网页地址分析


7. Python爬网页

1、网络爬虫基本原理
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定
停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根
据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。
2、设计基本思路
正如你所说,先到微博登陆页面模拟登录,抓取页面,从页面中找出所有URL,选择满足要求的URL文本说明,模拟点击这些URL,重复上面的抓取动作,直到满足要求退出。
3、现有的项目
google project网站有一个项目叫做sinawler,就是专门的新浪微博爬虫,用来抓取微博内容。网站上不去,这个你懂的。不过可以百度一下“python编写的新浪微博爬虫(现在的登陆方法见新的一则微博)“,可以找到一个参考的源码,他是用python2写的。如果用python3写,其实可以使用urllib.request模拟构建一个带cookies的浏览器,省去对cookies的处理,代码可以更加简短。
4、此外
看下网络爬虫的百度百科,里面很多比较深入的内容,比如算法分析、策略体系,会大有帮助,从理论角度提升代码的技术层次。

Python爬网页

8. 爬虫技术可以分析数据吗?

目前在不少大数据团队中,数据分析和数据挖掘工程师通常都有明确的分工,数据采集往往并不是数据分析和挖掘工程师的任务,通常做爬虫的是大数据应用开发程序员或者是数据采集工程师(使用爬虫工具)的工作任务。但是对于数据分析工程师来说,掌握爬虫技术也是一个比较普遍的现象,原因有以下几点:

第一:数据分析师往往都会使用Python,而爬虫是Python比较擅长的开发内容。不少数据分析师在学习Python开发的时候都做过爬虫开发,其实不少Python程序员都会使用Python做爬虫,这是学习Python比较常见的实验。

第二:方便。不少数据分析工程师在学习的时候都会自己找数据,而编写爬虫是找数据比较方便的方式,所以很多数据分析工程师往往都会写爬虫。我在早期学数据分析的时候就是自己写爬虫,这是一个比较普遍的情况。

第三:任务需要。现在不少团队针对小型分析任务往往会交给一两个人来完成,这个时候往往既要收集数据、分析数据,还需要呈现数据,这种情况下就必须掌握爬虫技术了。这种情况在大数据分析领域是比较常见的,当然也取决于项目的大小。看一个使用Numpy和Matplotlib做数据分析呈现的小例子:

网络爬虫技术本身并不十分复杂(也可以做的十分复杂),在使用Python开发出一个爬虫程序之后,在很多场景下是可以复用的,只需要调整一些参数就可以了,所以爬虫技术并不难。对于数据分析人员来说,获得数据的方式有很多种,编写爬虫是一个比较方便和实用的手段,建议大数据从业人员都学习一下爬虫技术。