• 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列表

  • 相关阅读:
    详解SQL Server的两个存储过程:sp_MSforeachtable/sp_MSforeachdb
    使用WorkService创建定时任务
    Mahout下个性化推荐引擎Taste介绍
    Apache Mahout中的机器学习算法集
    内网信息收集笔记 楼下的小可怜
    关于linux的suid提权 楼下的小可怜
    Cobalt Strike初探 楼下的小可怜
    Google hacking 楼下的小可怜
    Git和Repo扫盲——如何取得Android源代码 zt
    Howto find native code memory leak in Android
  • 原文地址:https://www.cnblogs.com/lightmao/p/4786979.html
Copyright © 2020-2023  润新知