zoukankan      html  css  js  c++  java
  • Python 爬取单个网页所需要加载的地址和CSS、JS文件地址

    Python 爬取单个网页所需要加载的URL地址和CSS、JS文件地址

    通过学习Python爬虫,知道根据正式表达式匹配查找到所需要的内容(标题、图片、文章等等)。而我从测试的角度去使用Python爬虫,希望爬取到访问该网页所需要的CSS、JS、URL,然后去请求这些地址,根据响应的状态码判断是否都可以成功访问。


    代码

    '''
    Created on 2017-08-02  

    @author: Lebb
    '''
    import sys
    import urllib2
    import re
    reload(sys)
    sys.setdefaultencoding('utf-8')

    url = "https://www.szrtc.cn/"
    http = "http"
    request = urllib2.Request(url,headers=Headers)
    responsecode = None
    errorcount = 0
    itemurl = url

    def getResponse():
    try:
    response = urllib2.urlopen(request)
    except urllib2.HTTPError,he:
    print he.code
    except urllib2.URLError,ue:
    print ue.reason
    else :
    return response.read().decode('utf-8')

    def getUrl():
    html = getResponse()
    patterncss ='<link href="(.*?)"'
    patternjs = '<script src="(.*?)"'
    patternimg = '<img src="(.*?)"'
    patternpage = '<a.*?href="(.*?)"'
    patternonclick = "openQuestion.*?'(.*?)'"
    href = re.compile(patterncss, re.S).findall(html)
    href += re.compile(patternimg, re.S).findall(html)
    href += re.compile(patternpage, re.S).findall(html)
    href += re.compile(patternjs, re.S).findall(html)
    href += re.compile(patternonclick, re.S).findall(html)
    return href

    def reasonCode():
    global errorcount
    itemurl = getUrl()
    for item1 in itemurl:
    if http in item1:
    sendurl = item1
    else:
    sendurl = url + item1
    try:
    print sendurl
    responseurl = urllib2.urlopen(sendurl,timeout=8)
    except urllib2.HTTPError,he:
    responsecode = he.code
    errorcount += 1
    except urllib2.URLError,ue:
    responsecode = ue.reason
    errorcount += 1
    else:
    responsecode = responseurl.getcode()
    if(responsecode != 200):
    errorcount += 1
    print responsecode
    #return responsecode
    print errorcount

    运行的结果:
    运行截图

    错误截图:
    错误截图

    实际上这条请求复制到浏览器是可以访问的,但是Python 的urllib2访问时,因为请求带中文参数,没有进行编码转换,导致报400错误。
    尝试在代码中加入utf-8,还是没有效果,仍然报错。
    这个问题先记下来,后面去找到其他解决办法

  • 相关阅读:
    Unity3d修炼之路:游戏开发中,3d数学知识的练习【1】(不断更新.......)
    Codeforces 463C Gargari and Bishops 题解
    kettle入门(七) 之kettle增量方案(一)全量比对取增量-依据唯一标示
    cpp学习笔记 1一个简单的小程序以及一些的知识点
    POJ 1321-棋盘问题(DFS)
    偶遇 smon 进程cpu 开销高异常分析
    Android 虚线切割线
    magento安装wordpress
    分组password算法
    Android_编程规范与经常使用技巧
  • 原文地址:https://www.cnblogs.com/jpfss/p/9233738.html
Copyright © 2011-2022 走看看