精华内容
下载资源
问答
  • Python爬虫实战之爬取网站全部图片(一)

    万次阅读 多人点赞 2018-09-02 12:28:21
    Python爬虫实战之爬取网站全部图片(二) 传送门: https://blog.csdn.net/qq_33958297/article/details/89388556 爬取网址: http://www.meizitu.com/a/more_1.html 爬取地址:...

    Python爬虫实战之爬取网站全部图片(二)

    Python爬虫实战之通过ajax获得图片地址实现全站图片下载(三)

     

    一.获得图片地址 和 图片名称

    1.进入网址之后

    按F12  打开开发人员工具点击elemnts

     2.点击下图的小箭头 选择主图中的任意一个图片   那我们这里点击第一个 图片

       3.显示控制台 为了验证xpath是否正确

     

        4.通过xpath获得a的href  和 title.

    (请放大看)我们看到 他提示的是有10个 我们回到网站中看一下  在主页上数一下 他确实是10个 也就是说 我们获得的href 和title是没有任何问题的 那么留着为我们后面使用.

        5.我们还需要访问这个链接的请求头的信息 以备后面操作的时候来使用

    这里可以看到 没有什么特别的请求头

    6.获得每套图里的 所有图片.这也是我们的目的所在 不然前面那么多工序不是浪费吗。

    可以看到 我们获得了11个链接地址   不要被源码中的文字所迷惑

     

    7.获得相应的请求头  

    可以发现 需要注意的只有一个字段Referer 这里的地址就是我们访问这个页面进来的时候的那个地址 只要把那个地址给上就行了

    8.对于404的处理 如果出现了404那就只有重新请求了

     

    二.编写python代码实现爬取.

        1.需要用到的库有: 

          Requests   lxml   

        2.IDE : pycharm

        3.python 版本: 2.7.15

    下载地址: https://download.csdn.net/download/qq_33958297/12195656

     

    展开全文
  • Python爬虫实战

    千次阅读 2017-05-11 10:24:03
    Python爬虫实战

    引言

    • 网络爬虫是抓取互联网信息的利器,成熟的开源爬虫框架主要集中于两种语言Java和Python。主流的开源爬虫框架包括:
    1.分布式爬虫框架:Nutch
    2.Java单机爬虫框架:Crawler4j, WebMagic, WebCollector、Heritrix
    3.python单机爬虫框架:scrapy、pyspider
    
    • Nutch是专为搜索引擎设计的的分布式开源框架,上手难度高,开发复杂,基本无法满足快速开发的需要。
    • Java单机类爬虫框架普遍容易上手,最大的优势是在Java技术的生态圈非常完善,轮子很多,同一个功能的轮子都有好几个不同的厂家提供,对于搭建完整的系统或者整合到现有的Java系统中都较为容易。
    • 使用python开发的爬虫框架最大的特点是开发效率非常高,做相同的事情,代码量要远少于使用Java开发。缺点也比较明显,如果对python不熟悉的情况下,代码调试的时间会耗费掉编码时省下来的时间,甚至会浪费得更多,在爬取业务非常复杂的情况下,会花掉更多的调试时间。

    • 如果你想学习Python可以来这个群,首先是四七二,中间是三零九,最后是二六一,里面有大量的学习资料可以下载

    • 总结下各个爬虫框架的特点:

      语言 插件 上手难度 支持分布式 支持JS页面抓取 特点
    Nutch Java 支持,开发复杂 支持 不支持 专门为搜索引擎设计
    Crawler4j Java 不支持 不支持 不支持 简单
    WebMagic Java 支持 不支持 不支持 scrapy的Java版本
    WebCollector Java 支持 不支持 支持 内置selenium
    Heritrix Java 支持 不支持 不支持 扩展性较好
    scrapy Java 支持 扩展可支持 不支持 扩展性强
    pyspider Java 支持 支持 支持 强大的爬虫管理和监控
    • 所有的框架都解决了以下几个问题:
    1. URL管理,URL去重
    2. 多线程抓取,线程池管理
    3. 代理
    4. 指定cookie
    5. 集成网页解析器
    6. 广度遍历或者深度遍历抓取
    
    • 使用框架的最大好处是上述的问题都已经被解决,减少了开发的成本。缺点是开发模式受限于框架的设计思想,由于对框架的掌控程度有限,深度定制需要修改源码时会带来额外的成本。

    python爬虫

    • 使用python编写爬虫具有非常明显的优势,当满足以下需求时,强烈建议首选python作为开发语言。
    1. 减少开发量,并快速的看到结果
    2. 垂直领域的精确抓取,具有明确的抓取对象,需要格式化抽取数据
    3. 指定ajax请求抓取,或有抓取有限的url请求数据
    4. 不作为持续集成的系统,仅需要快速收集数据
    

    basic版爬虫

    • 在进行精确数据抓取时,使用框架并不一定具有优势。框架提供的主要功能:1.多线程抓取,2.URL管理和去重,3.增量抓取,4.监控。
        1. 多线程抓取的作用是提高抓取效率,但是现在主流的搜索平台,在关键数据上都做了防抓取的工作,过快的抓取频率很容易导致当前IP的流量被视为异常流量,最坏的结果是IP被列入网站的黑名单,被限流或禁止访问一段时间。
        2. 在进行精确数据抓取时,URL去重的作用并不大,甚至不需要。
        3. 增量抓取是个很实用的功能,对于大规模的数据抓取很有必要,因为在数据抓取的过程中很可能出现异常,或者某些原因需要暂停抓取过程,导致某些数据没有成功获取,增量抓取机制能够很好的支持在特殊情况下的数据抓取延续性。
        4. 监控,大型数据抓取系统必不可少的一个功能。
    
    • 很多爬虫框架并不直接支持增量抓取和监控功能,作为一个小范围的快速的精确数据抓取的爬虫,增量抓取和监控并不是必须的。
    • basic爬虫具有的基本功能:
        1. 发起http请求
        2. html解析
        3. json解析
    
    • 只要实现这三个功能,就能够写出一个从搜索平台上抓取数据的爬虫,在python的世界里,使用urllib2+BeautifulSoup+simplejson/json就能快速的实现一个爬虫。
    • 发起一个http登录请求:
    import urllib2
    import json
    header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36','Content-Type':'application/json'}
    data = json.dumps({"userName":"wenbin", "password":"passwd"})
    request = urllib2.Request(loginUrl, None, header)
    response = urllib2.urlopen(request)
    data = response.read()
    response.close()
    
    • 有时需要保存cookie,或者携带cookie发送请求,将代码改造一下:
    import urllib2
    import json
    import cookielib
    header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36','Content-Type':'application/json}
    loginUrl = "${loginUrl}"
    data = json.dumps({"userName":"wenbin", "password":"passwd"})
    cookieFileName = 'cookie.txt'
    # set cookie to request
    cookie = cookielib.MozillaCookieJar(cookieFileName)
    handler = urllib2.HTTPCookieProcessor(cookie)
    opener = urllib2.build_opener(handler)
    request = urllib2.Request(loginUrl, data, header)
    response = opener.open(request)
    # save the cookie
    cookie.save(ignore_discard=True, ignore_expires=True)
    response.close()
    dataUrl = "${dataUrl}"
    request = urllib2.Request(dataUrl, None, header)
    data = response.read()
    response.close()
    
    • cookie也可以从已有的文件中读取:
    cookie = cookielib.MozillaCookieJar()
    # get cookie from file
    cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
    handler = urllib2.HTTPCookieProcessor(cookie)
    opener = urllib2.build_opener(handler)
    request = urllib2.Request(url, None, header)
    response = opener.open(request)
    data = response.read()
    response.close()
    
    • BeautifulSoup解析html的demo
    data = "<html><h2 class="total fl"><span>100</span></h2><lu><li class="clear xiaoquListItem"><div class="title"><a href="www.demo.com1/2/3">高大上小区</a></div></li><li class="clear xiaoquListItem"><div class="title"><a href="www.demo.com1/2/3">高大上小区</a></div></li><li class="clear xiaoquListItem"><div class="title"><a href="www.demo.com1/2/3">高大上小区</a></div></li></lu></html>"
    # load html content
    soup = BeautifulSoup(data, "html.parser")
    # find the first <h2> with class=total fl
    totalCount = soup.find('h2', attrs={'class': 'total fl'}).span.contents[0]
    # find all <li> with class=clear xiaoquListItem
    xiaoquTag = soup.find_all("li", attrs={'class': 'clear xiaoquListItem'})
    pageSize = len(xiaoquTag)
    for tag in xiaoquTag:
    # find all <div> with class=title belong to tag
        titleSet = tag.findAll("div", attrs={'class': 'title'})
        for title in titleSet:
            xiaoquUrl = title.a['href']
            xiaoquId = str(xiaoquUrl).split('/')[4]
            xiaoquName = title.a.contents[0]
            xiaoquList.append([xiaoquId,xiaoquName,xiaoquUrl])
    print xiaoquList
    
    • 在web 2.0的时代,许多数据是通过ajax请求的方式异步获取的,通常返回的数据为json格式,在许多情况下需要进行json解析, python提供了非常简单易用的json解析工具:json/simplejson,json和simplejson几乎是一样的,但simplejson在python 2.4以上的版本可以用,json在python 2.6以上版本可用
    import json
    jstr = '{"demoName":"demo","version":1}'
    jObject = json.loads(json_string)
    print jObject['version']
    object={"demoName":"demo","version":1,"cont":[1,2]}
    print json.dumps(object)
    
    • 使用urllib2+BeautifulSoup+simplejson/json编写的简易爬虫,能够实现对垂直类搜索平台的数据精确抓取和数据解析。

    爬虫进阶

    • basic版爬虫能够完成大部分的数据的抓取,但是仍然在一些情况下是无法抓取到目标数据的,比如当对方的数据是通过javascript对接口数据进行复杂的处理之后才输出的,那么直接抓取接口就无法获得正确的数据,而basic版的爬虫是无法运行javascript脚本的。
    • 为了能够正确运行javascript脚本,获取异步加载的、经过复杂处理之后才输出的数据,需要升级basic爬虫。在python体系下,推荐使用Selenium+PhantomJS+BeautifulSoup的组合实现新的爬虫。PhantomJS用来解析javascript和页面渲染,Selenium用来驱动PhantomJS,BeautifulSoup用来解析渲染结束后的html页面。
    • 在mac os下,使用PhantomJS发起请求,并使用BeautifulSoup解析渲染完成的html:
    from selenium import webdriver
    import os
    from bs4 import BeautifulSoup
    driverDir = "${dirvierDir}"
    os.environ["webdriver.phantomjs.driver"] = driverDir
    driver = webdriver.PhantomJS(driverDir)
    url = '${url}'
    driver.get(url)
    data = self.driver.page_source
    print data
    soup = BeautifulSoup(data, "html.parser")
    driver.close()
    
    • 其中,chromedriverDir为chrome浏览器的内核所在的文件目录。
    • selenium的webdriver还支持chrome、firefox和ie等浏览器,使用PhantomJS的原因是PhantomJS没有UI,因此运行速度更快,消耗的资源更少。进阶的爬虫具有更好的反爬虫能力,能够适应更多的场景。

    高级爬虫

    • 一个高级的爬虫,并不仅仅在于实现的技术、设计的理念有多先进,更在于其对被抓取的网站的服务器有多友好。无视服务器压力的爬虫一般会定义为低级的爬虫,把服务器拖垮,即影响了服务提供方的正常运营,也直接导致所需的数据无法获取。当然,肆无忌惮的爬虫也很容易被反爬虫程序发现,然后被封杀,或被‘投毒’。高级的爬虫需要具备以下几个特点:
    1. 控制对目标网站的抓取速度,如果仅仅是需要收集数据,而不要求数据的非常高的实时性,建议将访问频率控制到正常浏览的水平。
    2. 具有生命周期的管控,数据收集完成后,需要停止爬虫的工作。
    3. 健壮性,需要保证爬虫程序的健壮性,能够容忍坏的HTML、奇怪的服务器行为,不会因此而程序中断。
    4. 可扩展性,通用功能组件化,便于复用,也便于修改。
    5. 适当的监控,留下关键的抓取记录,便于异常恢复和抓取进度监控。
    6. 具有一定的‘反爬虫’抗性
    
    • 只要爬虫存在,‘反爬虫’就不会消失,做一个有礼貌的爬虫,将会极大的降低被‘反’的风险。

      小结&DEMO

      • 使用python能够非常快速、便捷的编写数据抓取的爬虫程序,能够满足大部分情况下的数据收集需求,带来无与伦比的快速反馈体验
      • 做一个有礼貌的爬虫,为了世界和平,请控制抓取速度
      • 真正的爬虫和反爬虫之战是RMB玩家的游戏,是技术和金钱的较量。
    展开全文
  • python 爬虫实战

    千次阅读 2017-08-11 14:16:28
  • Python爬虫实战之爬取网站全部图片(二)

    万次阅读 多人点赞 2019-04-18 21:30:04
    通过python 来爬取网站内所有的图片到本地 第三篇是动态获取参数构造图片地址实现下载图片 传送门:https://blog.csdn.net/qq_33958297/article/details/82316019 这篇文章的目的是因为上一个文章里的地址已经...

    通过python 来爬取网站内所有的图片到本地  

    第三篇是动态获取参数构造图片地址实现下载图片  传送门:https://blog.csdn.net/qq_33958297/article/details/82316019

     

    这篇文章的目的是因为上一个文章里的地址已经无法访问了

    考虑到可能有的新手没有办法去实验,这里又出了一个新的。

    但是和那个网站的实现方式略微不同。

    前面大致是一样的只是后面整套图片获取的时候 需要一些步骤。

     

    爬取地址没了:官方又说这个是色情了。还是同样的下面是详细教程了

     

    一.获得图片地址 和 图片名称

     

    1.进入网址之后

    按F12  打开开发人员工具点击elemnts

    https://img-blog.csdn.net/20180902122050752?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzOTU4Mjk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

     

     2.获得图片地址

    点击下图的小箭头 选择主图中的任意一个图片   那我们这里点击第一个 图片

     

     3.显示控制台

    为了验证xpath是否正确

    https://img-blog.csdn.net/20180902122050642?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzOTU4Mjk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

     

        4.验证xpath是否正确

    通过xpath获得a的href  和 title. (我看到好几个在问如何通过xpath获得a的href和title 把下面的图点开 不光有xpath语句,还有结果 )

    (请放大看)我们看到 他提示的是有24个 我们回到网站中看一下  在主页上数一下 他有32个 

    是因为里面有几个图片位是插入的广告  广告没有href 和data-origianl这两个属性

     

      5.获取请求头

     

    6.获得每套图里的所有图片.

    但是我们进来之后发现 他只有一张图,需要点击下一页来获取剩下的图片。

    思路是:  首先获取图片的地址,同时获取最大的页码,我们通过循环自己来构造他的图片地址

    1)第一张图

    2)第二张图

    3) 最后一张图

     

    结论:只要在16a后面一直加1就可以

     

    7.获取图片地址和页码

    上面是页码  下面是图片地址 

     

    8.获得请求每个图片的请求头  

    注意Referer字段  这地址显示图片得那个网址  

    这个字段主要用于防盗链 如果直接请求的话 会返回一些错误的东西 或者错误等问题

     

    9.对于404的处理 如果出现了404那就只有重新请求了

     

     

    二.编写python代码实现爬取.

        1.需要用到的库有: 

          Requests   lxml    如果没有安装的请自己安装一下

        2.IDE : vscode

        3.python 版本: 2.7.15

        4.代码实现的是多线程下载,多线程的好处 就不用我多说了。

    下载地址:https://download.csdn.net/download/qq_33958297/12195870

     

    展开全文
  • Python 爬虫实战入门教程 州的先生《Python 爬虫实战入门教程》作者:州的先生微信公众号:州的先生 博客:2018/3/241Python 爬虫实战入门教程 州的先生目录目录 2第一章:工具准备 31.1、基础知识 31.2、开发环境、...
  • Python爬虫实战:东方财富网股吧数据爬取(一)

    千次阅读 多人点赞 2021-01-30 11:30:04
    Python爬虫实战系列文章目录 Python爬虫实战:东方财富网股吧数据爬取(一) Python爬虫实战:东方财富网股吧数据爬取(二) Python爬虫实战:东方财富网股吧数据爬取(三) Python爬虫实战:东方财富网股吧数据爬取...
  • Python爬虫实战视频教程

    千人学习 2017-12-10 09:00:01
    本课程也是《Python爬虫实战》套餐的重要课程。 任务作业: 请在当当网上抓取《Python从菜鸟到高手》一书的相关信息,图书地址:http://product.dangdang.com/25333314.html 。需要通过Beautiful Soup分析图书页面...
  • Python爬虫实战:东方财富网股吧数据爬取(二)

    千次阅读 热门讨论 2021-03-14 08:36:38
    Python爬虫实战系列文章目录 Python爬虫实战:东方财富网股吧数据爬取(一) Python爬虫实战:东方财富网股吧数据爬取(二) Python爬虫实战:东方财富网股吧数据爬取(三) Python爬虫实战:东方财富网股吧数据爬取...
  • 本课程是一个Python爬虫实战课程,课程主要使用Requests+BeautifulSoup实现爬虫,课程包括五个部分: 第一部分:CSS选择器,主要讲解类选择器,ID选择器,标签选择器,伪类和伪元素,以及组合选择器等...
  • Python爬虫实战系列文章目录 Python爬虫实战:东方财富网股吧数据爬取(一) Python爬虫实战:东方财富网股吧数据爬取(二) Python爬虫实战:东方财富网股吧数据爬取(三) Python爬虫实战:东方财富网股吧数据爬取...
  • Python爬虫实战系列文章目录 Python爬虫实战:东方财富网股吧数据爬取(一) Python爬虫实战:东方财富网股吧数据爬取(二) Python爬虫实战:东方财富网股吧数据爬取(三) Python爬虫实战:东方财富网股吧数据爬取...
  • python爬虫实战教学

    千人学习 2018-01-02 13:48:21
    本课程是Tom老师精心准备的关于python爬虫的课程,通过本课程的学习,同学们能够使用python制作自己的爬虫,能够获取互联网上的数据。希望同学们好好学习网络爬虫,通过爬虫获取自己想要的数据并且进行大数据分析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,051
精华内容 16,020
关键字:

python爬虫实战

python 订阅
爬虫 订阅