zoukankan      html  css  js  c++  java
  • python爬虫实战

    任务:需要获取的内容:廖雪峰的官方网站中的python部分的标题和内容,之后获取整个python教程的内容,而不仅仅是这一个页面:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

    1. html源码进行分析:

      可以发现Python教程位于class="x-content"Div下,且这样的div是独一无二的,所以可以通过这个线索获取文章的标题

      文章的内容位于class="x-wiki-content"Div下,同样可以通过这个线索获取文章的所有内容

    2. 获取文章的标题和内容:

      获取网页的源码,需要使用ruquests模块

      Import request

      Htmlsource=requests.get('http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000')

    3. 获取标题:
      1. 通过正则表达式进行匹配:

      title=re.findall('<h4>(.*?)</h4>',htmlsource.text,re.S)[0]

      b)使用xpath获取内容:

      匹配之前需要建立一个类似于树的东西:

      Selector=etree.HTML(htmlsource.text)

      selector.xpath('//div[@class="x-content"]/h4/text()')[0]

    4. 获取内容:
      1. 通过正则表达式进行匹配

      content=re.findall('class="x-wiki-content">(.*?)</div>',htmlsource.text,re.S)[0]

      这样获取的内容里面该div所有的内容,你可以通过re模块的sub方法将所有的标签换成空的字符,如:

      re.sub('<(.+?)>','',content,count=0)

      1. 通过xpath获取内容

      contentDiv= selector.xpath('//div[@class="x-wiki-content"]')

      print contentDiv[0].xpath('string(.)')

    5. 通过第二步,可以实现对一个网页中的内容进行提取,那么接下来我们就要对该网页中左侧的链接进行提取,以便根据提取到的url获取python教程的所有内容
    6. 对网站左侧的html源码进行分析并获取urllist

      可以需要获取的内容所处的位置大致是ul-->li-->a,经过查询发现class="uk-nav uk-nav-side"ul4,而我们需要获取的是第二个,所以Selector.xpath('//ul[@class="uk-nav uk-nav-side"]')[1]就是我们想要的ul

      另外href显示的是相对路径,与真正的网络地址相比缺少了域名和http,因此获取这个href之后,需要我们进一步的处理

      使用正则表达式是比较麻烦的,因此获取url可以使用更为简单的xpath

      Urllist=[]

      Linklist=Selector.xpath('//ul[@class="uk-nav uk-nav-side"]')[1]

      for i in linklist:

      urllist.append('http://www.liaoxuefeng.com' + i.xpath('a/@href')[0])

      这样就获取到了想要的urllist

    7. 根据这些url获取所有的titlecontent

      第一种方法是遍历urllist

      根据url获取titlecontent,然后可以将其写入到一个文件中,速度非常慢,可能需要1分多钟

      第二种方法是通过map()函数:

      传入一个爬虫函数(参数是url),和一个url列表

  • 相关阅读:
    深入字节码 -- 计算方法执行时间
    RubyCritic:一款不错的检测代码质量工具
    云告警平台 OneAlert :如何帮助运维工程师做好汇报?
    企业应用程序安全的新「守护神」
    另辟蹊径:云计算给企业带来的4个好处
    年度十佳 DevOps 博客文章(后篇)
    自定义 Lint 规则简介
    静态分析安全测试(SAST)优缺点探析
    css添加了原始滚动条要隐藏滚动条的显示
    jquery实现图片切换
  • 原文地址:https://www.cnblogs.com/lightmao/p/4786979.html
Copyright © 2011-2022 走看看