使用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())

我想你正在使用Python v.3(从print中作为函数而不是语句声明)。

在Python 3中,page是一个bytes对象。所以你也需要用bytes对象来搜索它。试试这个:

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

希望对大家有所帮助

相关内容

  • 没有找到相关文章

最新更新