Python 3 网络爬虫学习建议?

理由
举报 取消

如题,题主python只是比较熟悉numpy和scipy、matplotlib这三个包,都是做科研的时候在用。最近心血来潮自己写了几个机器学习算法,然后想去网站上去爬一些东西玩玩,因为以后可能会想把它接到自己还没写完的自动交易程序里,但也只是个雏形,还有很长的路要走。但在办公室琢磨了一下午,发现网络爬虫这里又是个大坑,现阶段了解的就是scrapy其实并不适合python3,于是我现在只是在学习requests和beautifulsoup这俩包了。想请教网络爬虫这一块的行家,有没有什么推荐看的教程或者教学、博客什么的,真的想在这块在仔细学习一下。先谢过啦!

2017年7月23日 10 条回复 1249 次浏览

发起人:Yupeng 初入职场

数学PhD/向一切人学习

回复 ( 10 )

  1. NCZkevin
    理由
    举报 取消

    用py3写爬虫的话,强力推荐这本书,应该是目前最系统最完善介绍python爬虫的书。可以去图灵社区买电子版。书的内容很新也很系统,从beautifulSoup,requests到ajax,图像识别,单元测试。比起绝大多数blog零散的教程要好的多,看完书后就可以去做些实战项目,这个时候可以去github上找类似的项目借鉴下。

    英文版pdf:

  2. gaga salamer
    理由
    举报 取消

    在我博客连载的我写的爬虫系列教程,欢迎与我联系探讨~~~~

    希望能帮到你

    爬虫教程(1)基础入门

    爬虫教程(2)性能进阶

    知乎用户信息爬虫(规模化爬取)

    用scrapy爬取豆瓣电影新片榜

    用scrapy对豆瓣top250页面爬取(多页面爬取)

    用scrapy自动爬取下载图片

    用scrapy自动下载石原sama的豆瓣影人图集(727张图片,自动下载)

  3. hunter007
    理由
    举报 取消

    谢谢邀请!

    写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及规则,写好调度策略即可。

    这样做的另一个好处是,有利于经验积累。因为在抓取过程中遇到过各种各样的坑,都在这套系统上解决,这样一套好用、稳定的爬虫系统就建立了。

    想过把这些代码产品化,但确实太复杂了,还在不断完善中。但好处已经出现。新开始一个项目非常快,非常简单。

    写得有点乱。欢迎随时交流!

  4. Python小白
    理由
    举报 取消

    requests,re,threading,Queue,os有这几个包基本上就够用了。当初学习爬虫的时候一点都不懂,甚至连爬虫是什么都不知道就在学了,但是怀着不懂装懂的精神,到现在基本上也算对爬虫了解一二。

    正如你所说,爬虫是个大坑!因为这不仅仅是Python的事,想要学好爬虫,需要学习:网络基础知识(post/get/抓包)、(推荐)正则表达式(re模块)、多线程/多进程、数据库(储存)。

    还有各种各样的问题:Python蛋疼的编码问题、遇到Ajax就要用selenium(效率低)、遇到验证码肿么办(我放弃)、需要模拟登录(我直接用cookies,在这里推荐requests,用法是:requests.get(url,cookies=cookies))、被网站禁ip等等

    所以,如果你是想学爬虫,那么就慢慢磨吧。但是你是想学习机器学习,网上那么多的数据集,可以不必专门学

  5. 笑虎
    理由
    举报 取消

    直接用我在另外一个问题上的答案吧:

    Python爬虫还算比较简单的。我学习Python爬虫的步骤大概是:

    1. 学习Python基本语法,并熟练使用

    2. 学习Python中关于爬虫的几个重要的内置库:urllib/http/Cookie等

    3. 学习正则表达式,beautifulsoup等解析网页的工具或包

    4. 利用上几步学习的至少爬取比较简单的网站,比如一些应用市场等等,不需要登陆

    5. 学习利用工具分析网页请求流程、学习模拟登陆,拿新浪微博、知乎等需要登陆的网站进行练习

    6. 学习Python中关于多线程、多进程的东西,将以前写的代码改为多线程版本,提高效率

    7. 学习Python中的爬虫框架,或者自己写一个爬虫框架。

    更高级的,还有验证码识别、js动态请求、js执行、代理IP等等。

    推荐一个我自己的专栏:撸代码,学知识 – 知乎专栏,里边有一些爬虫的基础,以及自己尝试写的一个小型爬虫框架。

  6. xchaoinfo
    理由
    举报 取消

    GitHub – xchaoinfo/fuck-login: 模拟登录一些知名的网站,为了方便爬取需要登录的网站

    模拟登录的一个项目,已经解决了,知乎,微博,百度等网站。

    实现一个网站的模拟登录,对于爬虫来说就入门了。

    另外可以看看我关于 Python 入门的回答 如何入门 Python 爬虫? – xchaoinfo 的回答

    取匿..

  7. fireling
    理由
    举报 取消

    对这个问题,最佳的答案就是:lining0806/PythonSpiderNotes

    Python入门网络爬虫之精华版

    Python学习网络爬虫主要分3个大的版块:抓取分析存储

    另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下。

    首先列举一下本人总结的相关文章,这些覆盖了入门网络爬虫需要的基本概念和技巧:宁哥的小站-网络爬虫

    当我们在浏览器中输入一个url后回车,后台会发生什么?比如说你输入,你就会看到宁哥的小站首页。

    简单来说这段过程发生了以下四个步骤:

    • 查找域名对应的IP地址。
    • 向IP对应的服务器发送请求。
    • 服务器响应请求,发回网页内容。
    • 浏览器解析网页内容。

    网络爬虫要做的,简单来说,就是实现浏览器的功能。通过指定url,直接返回给用户所需要的数据,而不需要一步步人工去操纵浏览器获取。

    抓取

    这一步,你要明确要得到的内容是什么?是HTML源码,还是Json格式的字符串等。

    1. 最基本的抓取

    抓取大多数情况属于get请求,即直接从对方服务器上获取数据。

    首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。另外,requests也是非常有用的包,与此类似的,还有httplib2等等。

    Requests:
        import requests
        response = requests.get(url)
        content = requests.get(url).content
        print "response headers:", response.headers
        print "content:", content
    Urllib2:
        import urllib2
        response = urllib2.urlopen(url)
        content = urllib2.urlopen(url).read()
        print "response headers:", response.headers
        print "content:", content
    Httplib2:
        import httplib2
        http = httplib2.Http()
        response_headers, content = http.request(url, 'GET')
        print "response headers:", response_headers
        print "content:", content
    
  8. 水中柳影
    理由
    举报 取消

    直接上手几个项目,入门的话 无非就是 urllib的用法。

    书倒不要看很多, 多搞几个项目,培养下兴趣,你就有动力去做了。

    这里有一些练手的项目

    Python 的练手项目有哪些值得推荐? – 知乎用户的回答

    python 批量获取色影无忌 获奖图片

    python 获取 中国证券网 的公告

    抓取 知乎日报 中的 大误 系类文章,生成电子书推送到kindle

    python爬虫 推送知乎文章到kindle电子书

  9. 黄哥
    理由
    举报 取消

    爬虫不是很难。

    掌握以下知识

    1、了解基本html知识

    2、抓包

    3、标准库urllib2 或python3 的urllib

    4、第三方库requests,lxml,selenium,phantomjs等使用

    5、用上面的库取到html 的pagesource,有2种方式可以获取需要的信息。正则或xpath。

    6、抓取ajax 等javascript生成的网页。

    7、抓取手机app的数据。

    8、注意编码处理(python 2)

    ……………

    推荐看看“python爬虫联想词视频”,自己搜播放地址。

  10. 静觅
    理由
    举报 取消

    Python3爬虫视频学习教程 | 静觅

    最后的最后希望大家可以多多支持!非常感谢!知识就是力量!也希望我的课程能为您创造更大的财富!

我来回答

Captcha 点击图片更换验证码