list1234 发表于 2018-8-5 09:02:06

Python 爬虫

#=========================================================  # 功能: 获取网页内容(按规则)
  # 参数: self; url:页面地址;recom:正则
  #=========================================================
  def GetItems(self, url, recom):
  request = urlreq.Request(url, headers = self.header)
  html = urlreq.urlopen(request).read()
  # 页面编码转换 (encode: unicode->其它; decode: 其它->unicode)
  uhtml = html.decode("UTF-8")
  # 根据规则从页面选定内容;
  return re.findall(recom, uhtml)
  #=========================================================
  # 功能: 加载网页内容
  # 参数: self;
  #=========================================================
  def LoadItems(self, url, recom):
  while self.read:
  # 判断当items中的内容不足两条时,请求下一页数据并存入items列表中
  if len(self.items) < 2:
  try:
  uri = url.replace("$PX$", str(self.pageidx))
  item = self.GetItems(uri, recom)
  self.items.append(item)
  self.pageidx += 1
  except:
  print('[ ' + uri + ' ] 被外星人劫持[访问失败]....')
  self.read = False
  else:
  time.sleep(1)
  #=========================================================
  # 功能: 现实网页内容(并接收用户输入)
  # 参数: self;
  #=========================================================
  def ShowItems(self, items, pidx = 1):
  for item in items:
  print(u'[%d]' % pidx, item, '\n', item.replace('\n', '').replace('<br/>', '\n'))
  print('-' * 70)
  option = input().upper()
  if option == 'Q':
  self.read = False
  return 9
  elif option == 'R':
  self.pageidx = 1 # 初始值
  return 0
  return 1
  #=========================================================
  # 功能: 现实网页内容(并接收用户输入)
  # 参数: self;
  #=========================================================
  def Launcher(self, url, recom):
  self.read = True
  pidx = self.pageidx
  print(u'正在加载中请稍候......\n', '=' * 70)
  thread.start_new_thread(self.LoadItems, (url, recom))
  while self.read:
  if self.items:
  item = self.items
  del self.items
  ret = self.ShowItems(item, pidx)
  if ret == 9:
  print(u'即将推出阅读....')
  break
  else:
  pidx += ret
页: [1]
查看完整版本: Python 爬虫