lsekfe 发表于 2018-6-28 10:58:19

Day5-2测试积点任务

问题:
Selenium 一坨寻找 404 页面的代码?
这坨代码解决的问题:
公司主站做好了,哪些路由配置有问题,或者没资源,nginx搞错了,404, 5xx,挨个点?

下面进入不正经时间
肯定是在造轮子,而且必须是方的.但wo孤落寡闻,在坛子上找了找,看到个c#工具

写完了也没仔细测, 凑合能用,真是凑合能用

只适用于特定的网站,不要指望改个网址就能用了. 一直认为开发出让所有人都能用的测试工具, 简直扯淡,等同于让所有人都幸福

为啥不用request-html,这个...,暂时不会,没看;

可以拓展:

需要用户登录后去扫,会Se就成
需要处理特殊超链接,比如不是写在<a href=xxx>那,像我们公司的网站的分页...
404了,没准是网络不好,再抓一次
愿意改成多线程多什么就去改吧
反正是凑合能用


代码如下:
#! /usr/bin/env python3
# coding=utf-8

import time
from urllib.parse import urljoin
from selenium import webdriver
from bs4 import BeautifulSoup
from logzero import logger

domain='https://www.yirendai.com/abc'
title404="您访问的页面不存在-宜人贷"

dr=webdriver.Firefox()

def scrap_url(url,orginal_url=None,scrap=True):
    """
      a页面有b页面超链接,同时b页面有a页面超链接.访问a->解析出b->访问b->解析出a
      ->访问a,不对a页面再次解析,此时scrap=False
    """
    status_code=200
    try:
      now=time.time()
      dr.get(url)

      #根据title判断/或者404页面文件都比较小
      if dr.title==title404: status_code=404

      html=dr.page_source
      soup=BeautifulSoup(html,'html.parser')
    except Exception as e:
      dr.get_screenshot_as_base64('f{orginal_url}_to_{url}')
    finally:
      t='%.2f' %(time.time()-now)
      if status_code==200:
            mod="32m"
      elif status_code==404:
            mod="31m"
      logger.debug(f'{orginal_url} to {url} \033[0;34m {t}s \033[0m '
            f'\033[0;{mod}{status_code}\033[0m')

    more_seeds=[]

    #有些网站的站内的超链接不是href参数提供的,需要继续在if修改
    # 有些还有外链,都是在这处理....
    if scrap:
      for a in soup.find_all(href=True):
            if a['href'].startswith('/'):
                more_seeds.append((urljoin(domain,a['href']),url))
    return more_seeds

def main(domain):
    seeds=scrap_url(domain)
    old_urls=[]
    while seeds:
      seed,seeds=seeds,seeds
      url,orginal_url=seed
      if url not in old_urls:
            more_seeds=scrap_url(url,orginal_url)
            old_urls.append(url)
      else:
            more_seeds=scrap_url(url,orginal_url,False)
      seeds.extend(more_seeds)

main(domain)





qqq911 发表于 2018-6-29 10:53:31

这种用selenium感觉更麻烦

海海豚 发表于 2018-6-29 10:58:18

WEB端可以用XeruLinkSleuk这个工具来查看配置

abcsell 发表于 2018-6-29 11:13:25

WEB端可以用XeruLinkSleuk这个工具来查看配置

jingzizx 发表于 2018-6-29 12:35:17

这么麻烦啊

梦想家 发表于 2018-6-29 13:39:11


这种用selenium感觉更麻烦
页: [1]
查看完整版本: Day5-2测试积点任务