百度爬虫用啥语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度爬虫用啥语言相关的知识,希望对你有一定的参考价值。
参考技术A 问题一:Google和百度的爬虫是用什么语言写的? 15分 每个网站都有一个“爬虫协议”,至少大型网站都会有。Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
越是大型网站,Robots协议越规范,他们为了提高自己在搜索结果的位置,会针对百度、谷歌等搜素引擎写爬虫协议,而百度等搜索引擎不需要特别针对这些大网站写协议换个角度想,大的搜索引擎就那几个,而所谓“大网站”数不胜数,怎么可能写的过来?
如果你没能理解这部分内容,说明你还处在“菜鸟”级别。一般的爬虫算法是:先查找新地址,用队列或者堆栈来存储新增加的url;然后用爬虫程序从队列或者堆栈中取地址,继续爬虫。因为这两方面程序执行的速度是不一样的,不是说找到一个url就能立即爬完,或者有时候还没找到新url就已经爬完了,所以分了两个结构。
一般的程序中都会用多个函数来执行一个过程,但这在新手的学习中是不常见到、也是不易搞懂的。
鉴于你提出的问题,我觉得你不到能搞通爬虫程序的阶段,建议你还是从简单的程序开始。看看这个编程语言入门经典100例【Python版】,希望对你有帮助
问题二:百度他们公司 那建立索引 做爬虫这些的用什么语言? 实现搜索引擎核心算法 用什么语言啊? 爬虫什么耿言都可以写 拆解出来 主要就两部分
一部分是获取html
另一部分是正则表达式
这要有这两部分就能从网页上爬出有用的信息来了
至于多线程、OCR、分布式任务要根据你抓取站点的目标来做,并非是必须的
问题三:一般公司做爬虫采集的话常用什么语言 C# python
工具 phantomjs casperjs
问题四:请详细解释什么事百度爬虫,有什么作用 说通俗一点就是一段程序,这段程序可以在互联网上自动查询更新的网站
问题五:网络爬虫用什么语言好 爬虫好像很多语言都有,java,C#,python等等。我自己用的是python.
问题六:开发网络爬虫用什么语言比较好 python虽然我没用过,但是这个应嘎是最好的
问题七:网络爬虫用什么语言什么方式实现好 首先取决于目的 如果是一个站点,单一目的,用习惯的语言写吧,学别的语言用的时间都够重构两遍的了。 如果是有100左右的站点,做个框架,把你的爬虫管理起来,比起怎么写更重要。 用Java写过,语言笨重,所建立的数据模型的任何修改都会导致代
问题八:爬虫web软件 用什么开发语言最好 你可以试试用【神箭手云爬虫】写爬虫,
完全在云上编写和执行爬虫,不需要配置任何开发环境,快速开发快速实现。
官网上有不少网站的爬虫源码分享
还有专门的开发者文档,里面的教程很详细,各种基本爬虫基础和进阶开发知识都有介绍。
爬虫编辑器:
神箭手云爬虫开发平台:
问题九:各种语言写网络爬虫有什么优点缺点 我用 php 和 Python 都写过爬虫和正文提取程序。
最开始使用 PHP 所以先说说 PHP 的优点:
1.语言比较简单,PHP 是非常随意的一种语言。写起来容易让你把精力放在你要做的事情上,而不是各种语法规则等等。
2.各种功能模块齐全,这里分两部分:
1.网页下载:curl 等扩展库;
2.文档解析:dom、xpath、tidy、各种转码工具,可能跟题主的问题不太一样,我的爬虫需要提取正文,所以需要很复杂的文本处理,所以各种方便的文本处理工具是我的大爱。;
总之容易上手。
缺点:
1.并发处理能力较弱:由于当时 PHP 没有线程、进程功能,要想实现并发需要借用多路服用模型,PHP 使用的是 select 模型。实现其来比较麻烦,可能是因为水平问题我的程序经常出现一些错误,导致漏抓。
再说说 Python:
优点:
1.各种爬虫框架,方便高效的下载网页;
2.多线程、进程模型成熟稳定,爬虫是一个典型的多任务处理场景,请求页面时会有较长的延迟,总体来说更多的是等待。多线程或进程会更优化程序效率,提升整个系统下载和分析能力。
3.GAE 的支持,当初写爬虫的时候刚刚有 GAE,而且只支持 Python ,利用 GAE 创建的爬虫几乎免费,最多的时候我有近千个应用实例在工作。
缺点:
1.对不规范 HTML 适应能力差:举个例子,如果一个页面里面同时有 GB18030 字符集的中文和 UTF-8 字符集的中文,Python 处理起来就没有 PHP 那么简单,你自己需要做很多的判断工作。当然这是提取正文时的麻烦。
Java 和 C++ 当时也考察过,相对脚本语言比较麻烦,所以放弃。
总之,如果开发一个小规模的爬虫脚本语言是个各方面比较有优势的语言。如果要开发一个复杂的爬虫系统可能 Java 是个增加选项, C++ 我感觉写个模块之类的更加适合。对于一个爬虫系统来说,下载和内文解析只是基本的两个功能。真正好的系统还包括完善的任务调度、监控、存储、页面数据保存和更新逻辑、排重等等。爬虫是一个耗费带宽的应用,好的设计会节约大量的带宽和服务器资源,并且好坏差距很大。
问题十:爬虫技术 什么编程语言 爬虫的主要原理是抓取html的内容,大部分目前常见的语言都有相关的网络编程API,都能实现网络爬虫。比如说Java, Python, C++, C#, PHP, Perl等语言都可以。
希望对你有所帮助!
爬虫到百度贴吧,爬去自己的小说
最近在微信里看了一个小说叫《阴阳代理人》的,看到一半,发现断了,作者说把后面的部分放到了百度贴吧,去了贴吧发现,文章看起来比较费劲,乱糟糟的,所以为了我的小说,弄个了爬虫,去给我弄下来。
#!/user/bin/env python # -*- coding:utf-8 -*- import urllib2 import urllib import re #小说章节类 class ZHANGJIE: #初始化传入地址 def __init__(self,zjUrl,Num): self.zjUrl = zjUrl self.Num = Num #传入页码,获得网页源代码,只看精品 def getPage(self): url = self.zjUrl + str(self.Num) request = urllib2.Request(url) response = urllib2.urlopen(request) return response.read() #获取每章链接资源 def getNum(self): webcon = self.getPage() Num = re.findall(‘<a href="/p/(\d+)"‘,webcon) global Num_r Num_r = Num[::-1] return Num_r #每题内容类 class NEIRONG: #初始化,传入地址 def __init__(self,nrUrl,Num): self.nrUrl = nrUrl self.Num = Num #传入资源页码,获得网页源代码,只看楼主 def getPage(self): url = self.nrUrl + str(self.Num) + ‘?see_lz=1‘ request = urllib2.Request(url) response = urllib2.urlopen(request) return response.read() #获取小说章节和标题 def getTitle(self): webcon = self.getPage() title = re.search(‘style="width: 450px">(.*)</h1>‘,webcon).group(1) return title #获得小说内容并打印换行 def getCon(self): webcon = self.getPage() try: con = re.search(‘支持兰大,一定要记得投票哦!推荐票!(.*)(</div><br>)‘,webcon).group(1) con_n = re.sub(‘<br>‘,‘\n‘,con) return con_n except AttributeError: return ‘广告内容,已经忽略‘ #写入文件 def writeDate(self): con_t = self.getTitle() con_n = self.getCon() try: with open(‘/tmp/yydlr.txt‘,‘a‘) as f: f.write(‘\n‘) f.write(‘\n‘) f.write(con_t) f.write(con_n) except IOError: print ‘写入异常‘ for i in range(3050,1650,-50): ZJ = ZHANGJIE(‘http://tieba.baidu.com/f/good?kw=%E9%98%B4%E9%98%B3%E4%BB%A3%E7%90%86%E4%BA%BA&ie=utf-8&cid=0&pn=‘,i) ZJ.getNum() for i in Num_r: NR = NEIRONG(‘http://tieba.baidu.com/p/‘,i) NR.writeDate() print ‘小说已经准备好啦‘
本文出自 “大碗儿板儿面” 博客,请务必保留此出处http://banmian.blog.51cto.com/10975819/1748420
以上是关于百度爬虫用啥语言的主要内容,如果未能解决你的问题,请参考以下文章