Python爬虫开发,python怎么爬虫

  Python爬虫开发,python怎么爬虫

  1.可扩展置标语言

  虽然XML比JSON复杂,在Web中的使用也没有以前多了,但是在很多地方还是会用到,所以要知道如何操作XML。

  DOM SAX有两种方法来操作XML: DOM和SAX。DOM会把整个XML读入内存,解析成一棵树,所以占用内存多,解析慢。优点是可以任意遍历树的节点。SAX是一种流模式,可以同时读取和解析。占用内存少,解析快。缺点是我们需要自己处理事件。

  正常情况下,首选SAX,因为DOM占用内存太多。

  用Python中的SAX解析xml非常简洁。通常我们关心的事件是start_element、end_element和char_data。准备好这三个函数,然后就可以解析XML了。

  例如,当SAX解析器读取一个节点时:

  Python将生成3个事件:

  Start_element事件,当读取一个href=/;Char_data事件,读取python时;End_element事件,当读取/a时,试验代码:

  从xml.parsers.expat导入ParserCreate

  类DefaultSaxHandler(对象):

  def start_element(自身,名称,属性):

  print(sax:start_element: %s,attrs: %s % (name,str(attrs)))

  def end_element(自身,名称):

  print( sax:end _ element:% s % name

  def char_data(self,text):

  print(sax:char_data: %s % text

   xml=r

  计算机编程语言

  红宝石

  handler=DefaultSaxHandler()

  parser=ParserCreate()

  解析器。StartElementHandler=handler . start _ element

  解析器。EndElementHandler=handler . end _ element

  解析器。CharacterDataHandler=handler . char _ data

  解析器。Parse(xml)需要注意的是,读取大字符串时,可能会多次调用CharacterDataHandler,所以需要自己保存并在EndElementHandler中合并。

  除了解析XML,如何生成XML?在99%的情况下,需要生成的XML结构非常简单。因此,生成XML最简单、最有效的方法是拼接字符串:

  L=[]

  L.append(r )

  L.append(r )

  L.append(编码(一些数据))

  L.append(r )

  返回“”。join(L)如果想生成复杂的XML怎么办?建议你用JSON代替XML。

  解析XML时,注意找出自己感兴趣的节点,响应事件时,保存节点数据。解析后,可以处理数据。

  2.解析器

  如果我们要写一个搜索引擎,第一步是用爬虫抓取目标网站的页面,第二步是解析HTML页面,看里面的内容是新闻、图片还是视频。

  假设第一步已经完成,第二步应该如何解析HTML?

  HTML本质上是XML的子集,但是它的语法没有XML严格,所以它不能被标准的DOM或SAX解析。

  幸运的是,Python提供了HTMLParser来非常方便地解析HTML,只需要几行简单的代码:

  从html.parser导入HTMLParser

  从html.entities导入名称2代码点

  类MyHTMLParser(HTMLParser):

  def handle_starttag(self,tag,attrs):

  打印( %s %标签)

  def handle_endtag(self,tag):

  打印( %标签)

  def handle_startendtag(self,tag,attrs):

  打印( %s/ %标签)

  def handle_data(self,data):

  打印(数据)

  def handle_comment(自身,数据):

  打印()

  def handle_entityref(self,name):

  打印( % name)

  def handle_charref(self,name):

  打印( # % s;% name)

  parser=MyHTMLParser()

  parser.feed( 一些Some html教程.

  结束

   )feed()方法可以多次调用,也就是说,整个HTML字符串可能不是一次塞进去的,而是一部分一部分塞进去的。

  特殊字符有两种,一种是英文表达nbsp,一个是数字# 1234;两者都可以被解析器解析。

  使用HTMLParser,您可以解析文本、图像等。在网页中。

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: