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

  • 相关阅读:
    Mysql 数据库高级
    Mysql 数据库
    并发编程
    网络编程
    1113
    1112
    P相遇游戏
    中位数
    PETS
    打暴力程序的正确做法
  • 原文地址:https://www.cnblogs.com/lightmao/p/4786979.html
Copyright © 2011-2022 走看看