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,还是没有效果,仍然报错。
    这个问题先记下来,后面去找到其他解决办法

  • 相关阅读:
    导线截面积与导线直径及其载流量之间的关系
    quartus II 自动生成testbench
    几乎每个文件里面都有 #ifdef __cplusplus extern "C" { #endif 可我没找到程序里那个地方定义了__cplusplus 啊?这又是怎么回事呢?
    jni集成第3方third party动态库libwebrtc_audio_preprocessing.so时android.mk的编写
    升级svn 到1.7
    FFmpeg编码详细流程
    FFmpeg解码详细流程
    centos 在CentOS下编译FFmpeg
    centos编译 Compiling FFmpeg on CentOS RHEL Fedora
    C语言的面向对象设计之 X264,FFMPEG 架构探讨
  • 原文地址:https://www.cnblogs.com/jpfss/p/9233738.html
Copyright © 2011-2022 走看看