用python 只搞爬虫有前途吗没有职业前途

Python 3 网络爬虫学习建议?
如题,题主python只是比较熟悉numpy和scipy、matplotlib这三个包,都是做科研的时候在用。最近心血来潮自己写了几个机器学习算法,然后想去网站上去爬一些东西玩玩,因为以后可能会想把它接到自己还没写完的自动交易程序里,但也只是个雏形,还有很长的路要走。但在办公室琢磨了一下午,发现网络爬虫这里又是个大坑,现阶段了解的就是scrapy其实并不适合python3,于是我现在只是在学习requests和beautifulsoup这俩包了。想请教网络爬虫这一块的行家,有没有什么推荐看的教程或者教学、博客什么的,真的想在这块在仔细学习一下。先谢过啦!
用py3写爬虫的话,强力推荐这本书,应该是目前最系统最完善介绍python爬虫的书。可以去图灵社区买电子版。书的内容很新也很系统,从beautifulSoup,requests到ajax,图像识别,单元测试。比起绝大多数blog零散的教程要好的多,看完书后就可以去做些实战项目,这个时候可以去github上找类似的项目借鉴下。英文版pdf: (个人觉得英文版更好,彩色的pdf)中文版pdf:
(支持正版) -------------更新:有评论说这本书内容比较浅,我表示赞同。但是对于新手来说,看完这本书,对于爬虫基础的应用与概念绝对有了初步的了解。其实国内有一本讲爬虫的好书,《自己动手写网络爬虫》,这本书除了介绍爬虫基本原理,包括优先级,宽度优先搜索,分布式爬虫,多线程,还有云计算,数据挖掘内容。只不过用了java来实现,但是思路是相同的。
在我博客连载的我写的爬虫系列教程,欢迎与我联系探讨~~~~希望能帮到你
谢谢邀请!写python爬虫2年多了,主要用的scrapy。关于python3,还没有开始学;在这方面,我算是传统的。一直在思考什么时候转python3。我主要关注的是我常用的python库是否支持,一旦支持,就立刻转python3.从最早的django、MySQLdb、PIL(Pillow)不支持,但现在这三者都支持了。所以在做web项目的时候是可以直接用python3了。所以现在的计划是今年下半年转python3。说回爬虫。scrapy确实使用者众,可惜还不支持python3。所以现在的爬虫项目还是用python2.7。现在用着非常顺手。我的思路是,用django开发业务逻辑,根据业务逻辑建立的model,用scrapy抓取。是的,我的项目将django和scrapy代码放在一个repo了。也可以分开。另外,scrapy的调度使用的是celery,所有爬虫的调度时间和频率都是用celery控制的。django、scrapy、celery是我做开发的三大法器。如果你不想使用scrapy等框架,像上面的回答一样,用一些请求库和解析库也能搭建出来。但我倾向于用django、celery、scrapy搭建通用的抓取系统。简单说,用django建立模型,scrapy做一些常用爬虫,规则定义模块;celery制定调度策略,可以非常快地建立一套系统。规则定义模块 不是说的scrapy的Rule,而是我自定义的一套规则。它描述了抓取的起始URL如何获取,如何发现需要的url及处理动作,需要抓取哪个Item, Item中每个Field的规则定义(xpath、css、json, processors,default value,是否需要更新等)。这里说不完整,确实比较发杂。对于熟悉这套规则的人来说,比较简单,抓取过程变成了定义item及规则,写好调度策略即可。这样做的另一个好处是,有利于经验积累。因为在抓取过程中遇到过各种各样的坑,都在这套系统上解决,这样一套好用、稳定的爬虫系统就建立了。想过把这些代码产品化,但确实太复杂了,还在不断完善中。但好处已经出现。新开始一个项目非常快,非常简单。写得有点乱。欢迎随时交流!
requests,re,threading,Queue,os有这几个包基本上就够用了。当初学习爬虫的时候一点都不懂,甚至连爬虫是什么都不知道就在学了,但是怀着不懂装懂的精神,到现在基本上也算对爬虫了解一二。正如你所说,爬虫是个大坑!因为这不仅仅是Python的事,想要学好爬虫,需要学习:网络基础知识(post/get/抓包)、(推荐)正则表达式(re模块)、多线程/多进程、数据库(储存)。
还有各种各样的问题:Python蛋疼的编码问题、遇到Ajax就要用selenium(效率低)、遇到验证码肿么办(我放弃)、需要模拟登录(我直接用cookies,在这里推荐requests,用法是:requests.get(url,cookies=cookies))、被网站禁ip等等所以,如果你是想学爬虫,那么就慢慢磨吧。但是你是想学习机器学习,网上那么多的数据集,可以不必专门学
urllib2 urllib 这么多人推荐beautifulsoup的话 其实我想推荐pyQuery这个包如果你对jQuery有所了解的话 这个包会比beautifulsoup更好上手学会浏览器抓包 像chrome的Network栏的抓包功能就很好用python2的话编码是坑 我暂时还没有用过python3写爬虫……像反反爬虫策略一般是看见了再慢慢解决东西都是从写代码里面学来的 不是看文档看会的
模拟登录的一个项目,已经解决了,知乎,微博,百度等网站。实现一个网站的模拟登录,对于爬虫来说就入门了。另外可以看看我关于 Python 入门的回答 取匿..
谢邀有几个基本的库要掌握:1、提取网页信息,发送表单,模拟登陆等用requests。2、解析网页内容,提取自己想要的东西用BeautifulSoup,这个库真的很好用,多看一下官方文档。3、提取到的东西写入文档或者表格后续处理用python的doc模块和csv模块,如果要存到数据库中用mysql。4、ajax等动态页面的提取用selenium。5、多线程爬虫用threading模块或者multiprocessing pool库下的map函数。关于爬虫的学习,我觉得最好是有需求驱动,即你想做一个什么项目或者自己想搜集一些东西,然后边做边学,碰到不懂得直接用google搜索。比如我最开始学爬虫就想自己把豆瓣上的小说按评分排名爬取下来,找好看的小说看。这样的一个好的驱动会使你不断学习,在这其中不断提高自己。
爬虫不是很难。掌握以下知识1、了解基本html知识2、抓包3、标准库urllib2 或python3 的urllib4、第三方库requests,lxml,selenium,phantomjs等使用5、用上面的库取到html 的pagesource,有2种方式可以获取需要的信息。正则或xpath。6、抓取ajax 等javascript生成的网页。7、抓取手机app的数据。8、注意编码处理(python 2)...............推荐看看“python爬虫联想词视频”,自己搜播放地址。
首先要找个师傅,有人带你感觉会完全不同如果没有师傅,你要有想法,要不会很无措掌握好requeats,beautifulsoup这两个库,这是两把锤子,有了它看谁都像钉子学会re正则,轮子哥是你的榜样文件读写,至少你要能写csv,然后是excel等格式,数据库读写有了以上这些,政府网站,二逼页面都能拿来练手了,最好找个黄网爬,sis,1024这类,还有那些用动力社区搭建的PHP网站为你提供无尽的资源,同时是你司机之路的助推器接下来遇到需要注册的网站,试试cookie和最简单的图像识别遇到反爬了UA和IP池维护数据结构的优化再往上就是大规模爬取,这已经是我的目标了,暂时还不会
直接上手几个项目,入门的话 无非就是 urllib的用法。 书倒不要看很多, 多搞几个项目,培养下兴趣,你就有动力去做了。这里有一些练手的项目
已有帐号?
无法登录?
社交帐号登录只精通爬数据这个技能,以后能有大的发展吗?
以前去一家公司实习,误打误撞开始接触爬虫。然后在公司也主要是做爬虫了。从小白开始,接触了gooseeker、火车头、八爪鱼等采集器。以前也是一直用这些工具来采集数据。在学习过程中,有个疑惑。既然利用这些采集器就可以做到数据的爬取。我还有必要再去深入学习这些编程语言,来做爬虫嘛?只做爬虫的话,是不是发展空间有点太小啦?
按时间排序
非常赞同@的回答。这位同学你还没入门爬虫呢。真正的爬虫是一个复杂的分布式系统,对开发人员的要求极高。需要掌握的知识涵盖了整个产品开发。没事你可以看看今日头条的招聘
一般小公司比较多,都当工具用
很难跳得高。。
谢邀!做爬虫有没有大的发展?答案是肯定的,但是不一定是在爬虫工程师这个方向。先说说你要做好爬虫要了解哪些知识?1.HTTP 协议:开发爬虫 HTTP 协议是首先要了解的,你与 HTTP Server 通讯是基于这个协议,各种请求方式、规则、状态。只有基本了解了这些才算是迈向开发爬虫的第一步。2.Socket 通讯:爬虫程序在通讯上的会遇到对方服务器处理,客户端等待服务器相应的情况。这时网络和硬件资源都是闲置的,程序如何更优化的解决这些效率问题?利用 epoll、select 或者多进程、多线程这些都是你根据实际情况需要考虑的。3.存储:如果只是简单抓点东西当然怎么存都行,但是如果是长期,大量的抓取那么怎么存是你要好好考虑的问题。数据以什么格式存储?采用哪类存储服务?存储时间?更新周期?等等。这些根据项目的不同都有自己的特点。4.了解 HTML 做正文识别:固定的几个网站可以手工写模板完成,利用正则、xPath 都可以。但是如果目的是成千上万的网站,要想识别网站的标题、正文、日期、作者等信息那么需要知道的就多了,同时再结合我国前端规范程度,你需要精通 HTML 和实体识别技术。5.对内存存储有了解:如果抓取的页面过百万,那么页面排重就是个需要仔细考虑的问题。为了快速的把没抓取过的页面筛选出来,你需要了解内存存储方式,用来做排重的查询。数量少用 Hash 表就可以应付,如果数量大那么可能要实现一个 Bloom Filter ,如果有更加负责的需求那复杂程度可能更高。6.文章更新频率预测:如果每天抓取大量网页,那么你会看到发现检查网站有没有新文章更新的任务会非常消耗资源,那么为了解决这个问题你需要利用历史数据和概率计算来为每个目标网站预测文章更新时间点。7.分布式技术:大规模的爬虫集群需要分布式设计,任务队列,数据回传,排重,等等都需要考虑到分布式。8.运维能力:控制和管理大量的服务器,对程序的状态、任务执行情况、带宽控制等等都需要你配置工具和写程序搞定。9.其他技术:如果你的爬虫需要抓取一些有价值的信息,那么对方肯定是严防死守的,如何能够绕过对方的爬虫判定规则,ip 切换、行为伪装、验证码识别等等。以上是对爬虫工作的技能需求,还没有深入到浏览器开发级别。这些技能精通1-2项,其他熟练掌握或知道方向,那么你以后发展空间还小吗?
注意积累 只会盲目使用工具是不可取的。一条路就是研究工具的开发原理 搞清楚源码 这样自己可以更花式的使用各种工具 而不是换个新的工具就一脸蒙x 会被时代抛弃的= =另一条路就是研究爬虫的底层实现咯,不过这个积累真的需要很久 慢慢来吧
谢邀. 通过你的描述, 你并不算严格意义上的"数据采集工程师", 退一步讲, 你基本没有入门爬虫. 可参考我的另一个回答. 爬虫有没有前途? 当然有的 ...
给我一个新手,我一星期就能培养出来。你说未来的前景如何?做你热爱的事情,别太计较眼前的利益。成功是需要累积的,那些累积在当时看来可能价值不大或者没有价值。
要我说实话?只会用这些爬虫框架?完全没用。
这玩意小公司也许可以感觉也许只能做个副业吧
或许你可以和大数据来个接触
暑假投python开发工程师岗,面试的时候才知道全都是做爬虫的,不过都是小公司。。
已有帐号?
无法登录?
社交帐号登录用Python写爬虫,用什么方式,框架比较好_百度知道python实现的一只从百度开始不断搜索的小爬虫
字体:[ ] 类型:转载 时间:
这是我第三天学python了, 想写一个东西纪念一下吧,于是写了一直爬虫,但是不是好的虫,只能讲网页的关键词存到本地, 但是我觉得基本上算是一只小虫了
文中用到了BeautifulSoup这个库, 目的是处理html文档分析的, 因为我只是提取了title的关键字,所以可以用正则表达式代替, 还有一个库是jieba, 这个库是中文分词的作用, 再有一个库是 chardet, 用来判断字符的编码, 本想多线程的, 但是自认为被搞糊涂了,就放弃了
代码如下:#coding:utf-8import reimport urllibimport urllib2import sysimport timeimport Queue import threadimport threadingimport jiebaimport chardetfrom BeautifulSoup import BeautifulSoup as BS
DEEP = 1000LOCK = threading.Lock()PATH = "c:\\test\\"urlQueue = Queue.Queue()def pachong():&url = ''&return url
def getPageUrl(html):&reUrl = re.compile(r'&\s*[Aa]{1}\s+[^&]*?[Hh][Rr][Ee][Ff]\s*=\s*[\"\']?([^&\"\']+)[\"\']?.*?&')&urls = reUrl.findall(html)&for url in urls:&&if len(url) & 10:&&&if url.find('javascript') == -1:&&&&urlQueue.put(url)
def getContents(url):&try:&&url = urllib2.quote(url.split('#')[0].encode('utf-8'), safe = "%/:=&?~#+!$,;'@()*[]")&&req = urllib2.urlopen(url)&&res = req.read()&&code = chardet.detect(res)['encoding']&&#print&&#print code&&res = res.decode(str(code), 'ignore')&&res = res.encode('gb2312', 'ignore')&&code = chardet.detect(res)['encoding']&&#print code&&#print res&&return res&except urllib2.HTTPError, e:&&print e.code&&return None&except urllib2.URLError, e:&&print str(e)&&return Nonedef writeToFile(html, url):&fp = file(PATH + str(time.time()) + '.html', 'w')&fp.write(html)&fp.close()&def getKeyWords(html):&code = chardet.detect(html)['encoding']&if code == 'ISO-8859-2':&&html.decode('gbk', 'ignore').encode('gb2312', 'ignore')&code = chardet.detect(html)['encoding']&soup = BS(html, fromEncoding="gb2312")&titleTag = soup.title&titleKeyWords = titleTag.contents[0]&cutWords(titleKeyWords)def cutWords(contents):&print contents&res = jieba.cut_for_search(contents)&res = '\n'.join(res)&print res&res = res.encode('gb2312')&keyWords = file(PATH + 'cutKeyWors.txt', 'a')&keyWords.write(res)&keyWords.close()def start():&while urlQueue.empty() == False:&&url = urlQueue.get()&&html = getContents(url)&&getPageUrl(html)&&getKeyWords(html)&&#writeToFile(html, url)
&&if __name__ == '__main__':&startUrl = pachong()&urlQueue.put(startUrl)&start()&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具#coding=utf-8import urllibdef getHtml(url): & &page = urllib.urlopen(url) & &html = page.read() & &return htmlhtml = getHtml("/p/")print htmlimport reimport urllibdef getHtml(url): & &page = urllib.urlopen(url) & &html = page.read() & &return htmldef getImg(html): & &reg = r'src="(.+?\.jpg)" pic_ext' & &imgre = re.compile(reg) & &imglist = re.findall(imgre,html) & &return imglist & & & & html = getHtml("/p/")print getImg(html)#coding=utf-8import urllibimport redef getHtml(url): & &page = urllib.urlopen(url) & &html = page.read() & &return htmldef getImg(html): & &reg = r'src="(.+?\.jpg)" pic_ext' & &imgre = re.compile(reg) & &imglist = re.findall(imgre,html) & &x = 0 & &for imgurl in imglist: & & & &urllib.urlretrieve(imgurl,'%s.jpg' % x) & & & &x+=1html = getHtml("/p/")print getImg(html)python学习资料交流群: &每天会更新视频资料,可以随便下载。阅读
& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & & &python(python6359) 
 文章为作者独立观点,不代表微头条立场
的最新文章
我会随便说,C++ 近年来开始”抄袭” Python 么?我只会说,我在用 C++ 来学习 Python. 我们可以通过列表生成式简单直接地创建一个列表,但是受到内存限制,列表容量肯定是有限的。而且,创建一个包含1模板系统基本知识模板是一个文本文件(可以是HTML,XML,CSV等任何文本格式),同时包含了静态内容先说说线程在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.将一些敏感为什么说人生苦短我用python Question 1 Python是什么 2 人们为什么用Python 3 Python是脚本语言吗 Python版Hello World Example 1 Python 2 Javapython网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容。但是很多时候我们要注意,可能很多网站都设置了防采集功能...话说现在基本上大家都在网上买东西,国家经济数据已经可以在网络购物的数据中略微窥见一二,再加上目前B2B行业的持续火爆,大有把所有交易搬到网上来的趋势,这个系列教程就来讲讲如果爬取这些大量的电商交易的数据。如果没有看过第一课的朋友,请先移步第一课,第一课讲了一些基础性的东西,通过软柿子”切糕王子”这个电商网站好好的练了一次手,相信大家都应该对写爬虫的流程有了一个大概的了解,那么这课咱们就话不多说,正式上战场,对垒尚妆网。引言
本文主要梳理了flask的current_app, request, session, g的实现原理OK,到该讲显示的时候了。没人可以否定好的画面是一款游戏吸引人最直接最诱人的因素,虽说滥画面高游戏度的作品
Python 和其他的脚本语言在性能上跟一些编译语言(如C语言)比较要差不少,例如这里开始之前,让我们再欣赏一下那只让人涨姿势的贪吃蛇吧:( 如果下面的动态图片浏览效果不佳的话,可以右键保存下本文主要介绍使用 Python 进行 TCP Socket 网络编程,假设你已经具有初步的网络知识及 Py(1)以r或R开头的python中的字符串表示(非转义的)原始字符串python里面的字符,如果开头处有个r模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模Pygame的历史Pygame是一个利用SDL库的写就的游戏库,SDL呢,全名Simple DirectMe概括从python开始就处理unicode字符,python源文件的编码与解码,我们写的python程序从产生到执行的过程如下:上次我们试着写了一个最简单的Pygame程序并且解释了一个大概的框架,这次就Pygame中也是游戏中最关键(多线程是什么自行补脑!!我们最常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。好吧~!其实你很厉害的,右键查看页面源代码。本文主要介绍使用 Python 进行 TCP Socket 网络编程,假设你已经具有初步的网络知识及 Python 基本语法知识。本文将详细分析python的全局变量与局部变量,学过php的人都知道,php里面的全局变量是无法在function里面去使用的,只有超全局变量才可以,那么python会怎么处理全局变量与局部变量呢?下面我们来看一下:进程与线程的历史我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心,它承担计算机的所有任务。 操作系统是运行在硬件之在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlope比我优秀百倍的人都在努力,我有什么理由不去努力学习。摘要算法简介Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。什么是摘要算法呢?摘要准确地讲,Python没有专门处理字节的数据类型。但由于str既是字符串,又可以表示字节,所以,字节数组=s什么时候,当你倾力做一件事情不是仅仅为了赚钱,而是因为热爱它、喜欢它,并想用它来造福更多的人。那么,财富自然会滚滚而来,成功更会与你如影随形。Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们人愿意改变,愿意学习,真的是没有什么能阻拦你的进步,这不仅仅是对于工资水平待遇的提高,而是说,你不虚度光阴,为自己的人生负责!
觉得自己不能一个人坚持学习的可以加Python学习交流群
验证:微信
一起交流前进在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。单如果你经常阅读Python的官方文档,可以看到很多文档都有示例代码。比如re模块就带了很多示例代码:>>> 程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。单在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在人生的道路上,也只有那些敢于攀登,不愿意放弃的人,才能迎得他自己的辉煌。 关注我的微信公众号,每天免费赠送学习资料:比我优秀百倍的人都在努力,我有什么理由不去努力学习。我们生来平凡,但是做着不平凡的事情!前面我们已经了解了如何启动和退出Python的交互式环境,我们就可以正式开始编写Python代码了。在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。python6359每天推送python语言的相关信息热门文章最新文章python6359每天推送python语言的相关信息}

我要回帖

更多关于 爬虫有前途吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信