使用urllib搜索源代码

时间:2013-01-14 17:40:00

标签: python encoding urllib

我正在尝试编写一个脚本来搜索网站源代码中的文本。我有它所以它成功地抓取源代码并打印出来,看起来像: b'<?xml version="1.0" encoding="UTF-8" ?>\n<!DOCTYPE html ......等等

但是,在尝试搜索使用print(page.find('div'))在代码中查找“div”标记时,我收到一条错误,指出TypeError: Type str doesn't support the buffer API我认为这与我收到的事实有关字节文字。如何将其编码为UTF-8或ASCII以便能够搜索字符串?

如果需要,这是我正在运行的简单代码:

import urllib.request
from urllib.error import URLError

def get_page(url):
  #make the request
  req = urllib.request.Request(url)
  the_page = urllib.request.urlopen(req)

  #get the results of the request
  try:
    #read the page
    page = the_page.read()
    print(page)
    print(page.find('div'))

  #except error
  except URLError as e:
    #if error has a reason (thus is url error) print the reason
    if hasattr(e, 'reason'):
      print(e.reason)
    #if error has a code (thus is html error) print the code and the error
    if hasattr(e, 'code'):
      print(e.code)
      print(e.read())

1 个答案:

答案 0 :(得分:0)

我认为你使用的是Python v.3(从print作为函数声明,而不是声明)。

在Python 3中,页面是一个字节对象。所以你需要使用bytes对象进行搜索。试试这个:

print(page.find(b'div'))

希望这可以提供帮助