当前位置: 首页 > news >正文

网站制作分工做视频网站注意什么软件

网站制作分工,做视频网站注意什么软件,南昌手机建站模板,学生管理系统目录 一、安装以及实例引入 #xff08;1#xff09;requests库下载 #xff08;2#xff09;实例测试 二、GET请求 #xff08;1#xff09;基本实例 #xff08;2#xff09;抓取网页 #xff08;3#xff09;抓取二进制数据 #xff08;4#xff09;添…目录 一、安装以及实例引入 1requests库下载 2实例测试         二、GET请求 1基本实例 2抓取网页 3抓取二进制数据 4添加请求头 三、POST请求 四、响应 五、高级用法 1文件上传 2cookie设置 3Session维持 4SSL证书验证 5超时设置 6身份验证 7代理设置 8Prepared Request 一、安装以及实例引入 1requests库下载 winR打开输入cmd打开window的命令行界面输入命令pip install requests 如果想要更新为国内源可输入命令pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 2实例测试         urllib库中的urlopen方法实际上是以GET方式请求网页requests库中相应的方法就是get方法下面通过实例展示一下 import requests if __name__ __main__:response requests.get(https://baidu.com)print(type(response))print(response.status_code) # 返回状态码print(type(response.text))print(response.text[:100]) # 返回响应内容print(response.cookies) # 返回cookies 响应结果如下 这里我们调用get 方法实现了与urlopen方法相同的操作返回一个Response对象并将其赋值在变量response中然后分别输出了响应的类型、状态码响应体的类型、内容以及 Cookie。观察运行结果可以发现返回的响应类型是 requests.models.Response响应体的类型是字符strCookie 的类型是 RequestsCookieJar。 二、GET请求 HTTP 中最常见的请求之一就是 GET 请求首先来详细了解一下利用 requests 库构建GET道的方法。 1基本实例 下面构建一个最简单的 GET 请求请求的链接为  https://www.httpsbin.org/get该网站会判断客端发起的是否为GET 请求如果是那么它将返回相应的请求信息 import requests if __name__ __main__:response requests.get(https://www.httpbin.org/get)print(response.text) 运行结果如下 可以发现我们成功发起了 GET请求返回结果中包含请求头、URL、IP等信息。 那么对于GET请求如果要附加额外的信息一般怎样添加呢? 例如现在想添加两个参数name和age其中 name 是 germey、age是 25于是 URL 就可以写成如下内容: https://www.https://www.httpbin.org/get?namegermeyage25 要构造这个请求链接是不是要直接写成这样呢? response requests.get( https://www.httpbin.org/get?namegermeyage25) 这样也可以但是看起来有点不人性化哎?这些参数还需要我们手动去拼接实现起来着实不优雅。 一般情况下我们利用params 参数就可以直接传递这种信息了 实例如下 import requests if __name__ __main__:data {name: germey,age: 25}response requests.get(https://www.httpbin.org/get, paramsdata)print(response.text) 运行结果如下 上面我们把URL 参数以字典的形式传给 get方法的params 参数通过返回信息我们可以判断请求的链接自动被构造成了  https://www.httpbin.org/get?age22namegermey这样我们就不用自己构造 URL了非常方便。 另外网页的返回类型虽然是 str类型但是它很特殊是 JSON格式的。所以如果想直接解析返回结果得到一个JSON格式的数据可以直接调用json方法。实例如下 import requests if __name__ __main__:response requests.get(https://www.httpbin.org/get)print(type(response.text))print(response.json())print(type(response.json())) 运行结果如下 可以发现调用json方法可以将返回结果(JSON格式的字符串)转化为字典。但需要注意的是如果返回结果不是 JSON 格式 就会出现解析错误 抛出 json. decoder.JSONDecodeError 异常。 2抓取网页 上面的请求链接返回的是JSON格式的字符串那么如果请求普通的网页 就肯定能获得相应的内容了。我们以一个实例页面  https://ssr1.scrape.center/ 作为演示,往里面加入一点提取信息的逻辑,将代码完善成如下的样子 import requests import re if __name__ __main__:response requests.get(https://ssr1.scrape.center)patten re.compile(h2.*?(.*?)/h2, re.S)titles re.findall(patten, response.text)print(titles) 这个例子中我们用最基础的正则表达式来匹配所有的标题内容。关于正则表达式会在2.3节详细介绍这里其只作为实例来配合讲解。 运行结果如下 3抓取二进制数据 在上面的例子中我们抓取的是网站的一个页面实际上它返回的是一个HTML文档。要是想抓取图片、音频、视频等文件应该怎么办呢? 图片、音频、视频这些文件本质上都是由二进制码组成的由于有特定的保存格式和对应的解析方式我们才可以看到这些形形色色的多媒体。所以要想抓取它们就必须拿到它们的二进制数据。下面以示例网站的站点图标为例来看一下 import requests if __name__ __main__:response requests.get(https://scrape.center/favicon.ico)print(response.text)print(response.content) 这里抓取的内容是站点图标也就是浏览器中每一个标签上显示的小图标如图2-3所示。 上述实例将会打印Response对象的两个属性一个是 text,另一个是content。 运行结果如下 可以注意到r. text中出现了乱码r.content的前面带有一个b代表这是bytes类型的数据。由于图片是二进制数据所以前者在打印时会转化为 str类型也就是图片直接转化为字符串理所当然会出现乱码。上面的运行结果我们并不能看懂它实际上是图片的二进制数据。不过没关系我们将刚才提取到的信息保存下来就好了代码如下 import requests if __name__ __main__:response requests.get(https://scrape.center/favicon.ico)with open(favicon.ico, wb) as f:f.write(response.content) 这里用了 open方法其第一个参数是文件名称第二个参数代表以二进制写的形式打开文件可以向文件里写入二进制数据。上述代码运行结束之后可以发现在文件夹中出现了名为favicon. ico 的图标,如图所示。这样我们就把二进制数据成功保存成了一张图片这个小图标被我们成功爬取下来了。同样地我们也可以用这种方法获取音频和视频文件。 4添加请求头 我们知道在发起HTTP请求的时候会有一个请求头Request Headers那么怎么设置这个请求头呢?很简单使用headers参数就可以完成了。在刚才的实例中实际上是没有设置请求头信息的这样的话某些网站会发现这并不是一个由正常浏览器发起的请求于是可能会返回异常结果导致网页抓取失败。要添加请求头信息例如这里我们想添加一个User-Agent字段就可以这么写 import requests if __name__ __main__:headers {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac 05 X 10_11_4) AppleWebKit/537.36(KHTML, like Gecko)Chrome/52.0.2743.116 Safari/ 537.36}response reques 当然可以在这个headers参数中添加任意其他字段信息。 三、POST请求 前面我们了解了最基本的GET请求另外一种比较常见的请求方式是 POST。使用requests库实现 POST请求同样非常简单实例如下 import requests if __name__ __main__:data {name: germey,age: 25}response requests.post(https://www.httpbin.org/post, datadata)print(response.text) 这里还是请求  https://www.httpbin.org/post该网站可以判断请求是否为POST方式如果是,就返回相关的请求信息。运行结果如下 可以发现我们成功获得了返回结果其中form部分就是提交的数据这证明POST请求成功发送了。 四、响应 请求发送后自然会得到响应。在上面的实例中我们使用text和content 获取了响应的内容。此外还有很多属性和方法可以用来获取其他信息例如状态码、响应头、Cookie等。实例如下 import requests if __name__ __main__:response requests.get(https://ssr1.scrape.center/)print(type(response.status_code), response.status_code)print(type(response.headers), response.headers)print(type(response.cookies), response.cookies)print(type(response.url), response.url)print(type(response.history), response.history)这里通过status_code属性得到状态码、通过headers属性得到响应头、通过 cookies属性得到Cookie、通过 url属性得到 URL、通过 history 属性得到请求历史。并将得到的这些信息分别打印出来。 运行结果如下 可以看到headers 和 cookies这两个属性得到的结果分别是 CaseInsensitiveDict和 Requests-CookieJar对象。我们知道状态码是用来表示响应状态的 例如200代表我们得到的响应是没问题的上面例子输出的状态码正好也是200所以我们可以通过判断这个数字知道爬虫爬取成功了。 requests库还提供了一个内置的状态码查询对象 requests.codes用法实例如下: import requests if __name__ __main__:response requests.get(https://ssr1.scrape.center/)exit() if not response.status_code requests.codes.ok else print(Requests Successfully) 这里通过比较返回码和内置的表示成功的状态码来保证请求是否得到了正常响应如果是就输出请求成功的消息否则程序终止运行这里我们用requests.codes.ok得到的成功状态码是 200。这样我们就不需要再在程序里写状态码对应的数字了用字符串表示状态码会显得更加直观。当然肯定不能只有 ok这一个条件码。 下面列出了返回码和相应的查询条件 # 信息性状态码 100: (continue,), 101:(switching_protocols,), 102: (processing,), 103: (checkpoint,), 122: (uri_too_long,request_uri_too_long), # 成功状态码 200:(ok, okay, all_ok, all_okay,all_good,\\o/,✔), 201: (created,), 202: (accepted,), 203:(non_authoritative_info,non_authoritative_information), 204: (no_content,), 205: (reset_content, reset), 206: (partial_content, partial), 207:(multi_status, multiple_status, multi_stati, multiple_stati), 208: (already _ reported,), 226:(im_used,), # 重定向状态码 300:(multiple_choices,), 301: (moved_permanently, moved, \\o-), 302: (found,), 303:(see_other, other), 304:(not_modified,), 305:(use_proxy,), 306:(switch_proxy,), 307:(temporary_redirect, temporary_moved, temporary), 308: (permanent_redirect, resume_incomplete, resume,), # These 2 to be removed in 3.0 # 客户端错误状态码 400:(bad_request, bad), 401: (unauthorized,), 402: (payment_required, payment), 403:(forbidden,), 404:(not_found,-o-), 405:(method_not_allowed, not_allowed), 406:(not_acceptable,), 407:(proxy_authentication_required, proxy_auth, proxy_authentication), 408: (request_timeout, timeout), 409:(conflict,), 410: (gone,), 411: (length_required,), 412:(precondition_failed, precondition), 413: (request_entity_too_large,), 414: (request_uri_too_large,), 415:(unsupported_media_type, unsupported_media, media_type), 416:(requested_range_not_satisfiable, requested_range,range_not_satisfiable), 417:(expectation_failed,), 418: (im_a_teapot, teapot, i_am_a_teapot), 421: (misdirected_request,), 422:(unprocessable_entity, unprocessable), 423:(locked,), 424: (failed_dependency, dependency), 425: (unordered_collection, unordered), 426: (upgrade_required, upgrade), 428:(precondition_required, precondition), 429:(too_many_requests, too_many), 431: (header_fields_too_large, fields_too_large), 444:(no_response, none), 449:(retry_with,retry), 450:(blocked_by_windows_parental_controls,parental_controls), 451: (unavailable_for_legal_reasons,legal_reasons), 499:(client_closed_request,), # 服务端错误状态码 500:(internal_server_error,server_error,/o\\, x), 501:(not_implemented,), 502:(bad_gateway,), 503: (service_unavailable, unavailable), 504:(gateway_timeout,), 505:(http_version_not_supported, http_version), 506:(variant_also_negotiates,), 507:(insufficient_storage,), 509: (bandwidth_limit_exceeded, bandwidth), 510:(not_extended,), 511: (network_authentication_required,network_auth,network_authentication) 例如想判断结果是不是404状态就可以用requests.codes.not_found作为内置的状态码做比较。 五、高级用法 1文件上传 我们知道使用requests 库可以模拟提交一些数据。除此之外要是有网站需要上传文件也可以用它来实现非常简单实例如下 import requests if __name__ __main__:files {file: open(favicon.ico, rb)}response requests.post(https://www.httpbin.org/post, filesfiles)print(response.text) 在前面我们保存了一个文件 favicon.ico这次就用它来模拟文件上传的过程。需要注意favicon.ico 需要和当前脚本保存在同一目录下。如果手头有其他文件当然也可以上传这些文件更改下代码即可。 运行结果如下 以上结果省略部分内容上传文件后网站会返回响应响应中包含files字段和form字段而form字段是空的这证明文件上传部分会单独用一个 files字段来标识。 2cookie设置 前面我们使用urllib库处理过Cookie写法比较复杂有了requests库以后获取和设置Cookie 只需一步即可完成。我们先用一个实例看一下获取Cookie 的过程 import requests if __name__ __main__:response requests.get(https://www.baidu.com)print(response.cookies)for key, value in response.cookies.items():print(key value) 运行结果如下 这里我们首先调用cookies属性成功得到Cookie可以发现它属于 RequestCookieJar类型。然后调用items 方法将Cookie 转化为由元组组成的列表遍历输出每一个 Cookie 条目的名称和值实现对 Cookie 的避历解析。 当然我们也可以直接用Cookie来维持登录状态。下面以GitHub为例说明一下首先我们登录GitHub,然后将请求头中的Cookie 内容复制下来如图所示。 可以将图中框起来的这部分内容替换成你自己的Cookie将其设置到请求头里面然后发送请求实例如下 import requests if __name__ __main__:headers {Cookie: _octoGH1.1.1112039458.1685693184; _device_id4e9538e1067cad27fe8ae30915d765e6; logged_inno; _gh_sessNXesPlZbiwj%2FEpVqr0xVxh%2F7IIQYvt%2FJes3I2A4IhZmxQ00JYtttOw8YoKHKaSj22dQ8%2Fj8Ae5Q62uPdlcIRoYph11wbphQtLCyQaa4Md2%2FuZaFNvY4MPoFM%2BT8eZBpbE859LmVuQUrG9%2BpMKo%2FjFwd2LqBd7vXcghrtMvm1YCVUmHmDzKmetwpIMDBQvJcsyEFvwNvq%2BQg3rg54HcDnr2UkwdhcJ3wBUZTGZ4iFCJEEi9NoOt5vCjodmFK6B8G5w1VjoYdNNGlrIb%2BXkARpFQ%3D%3D--1VYvsSt1SVkjz08A--VF5Zn8vJU%2Ffij1Dkw13p3g%3D%3D; preferred_color_modelight; tzAsia%2FShanghai}response requests.get(https://github.com/, headersheaders)print(response.text) 运行结果如下 可以发现结果中包含了登录后才能包含的结果其中有GitHub用户名信息你如果尝试一下同样可以得到你的用户信息。得到这样类似的结果说明用Cookie 成功模拟了登录状态这样就能爬取登录之后才能看到的页面了。 3Session维持 直接利用requests库中get或post 方法的确可以做到模拟网页的请求但这两种方法实际上相当于不同的Session或者说是用两个浏览器打开了不同的页面。设想这样一个场景第一个请求利用requests 库的 post方法登录了某个网站第二次想获取成功登录后的自己的个人信息于是又用了一次 requests 库的 get方法去请求个人信息页面。这实际相当于打开了两个浏览器是两个完全独立的操作对应两个完全不相关的Session那么能够成功获取个人信息吗? 当然不能。有人可能说在两次请求时设置一样的 Cookie 不就行了?可以但这样做显得很烦琐我们有更简单的解决方法。 究其原因解决这个问题的主要方法是维持同一个Session也就是第二次请求的时候是打开一个新的浏览器选项卡而不是打开一个新的浏览器。但是又不想每次都设置Cookie该怎么办呢?这时候出现了新的利器——Session对象。利用Session对象我们可以方便地维护一个Session而且不用担心Cookie的问题它会自动帮我们处理好。 我们先做一个小实验吧如果沿用之前的写法实例如下 import requests if __name__ __main__:requests.get(https://www.httpbin.org/cookies/set/number/123456789)response requests.get(https://www.httpbin.org/cookies)print(response.text) 这里我们请求了一个测试网址  https://www.httpsbin.org/cookies/set/number/123456789 。请求这个网址时设置了一个Cookie条目名称是number,内容是123456789。随后又请求了 https://www.httpbin.org/cookies以获取当前的 Cookie 信息。这样能成功获取设置的 Cookie 吗? 试试看。 运行结果如下 我们再使用刚才所说的Session试试看 import requests if __name__ __main__:s requests.Session()s.get(https://www.httpbin.org/cookies/set/number/123456789)response s.get(https://www.httpbin.org/cookies)print(response.text) 运行结果如下 可以看到Cookie 被成功获取了这下能体会到同一个Session和不同 Session的区别了吧所以利用Session可以做到模拟同一个会话而不用担心 Cookie 的问题它通常在模拟登录成功之后进行下一步操作时用到。Session 在平常用得非常广泛可以用于模拟在一个浏览器中打开同一站点的不同页面。 4SSL证书验证 现在很多网站要求使用HTTPS协议但是有些网站可能并没有设置好HTTPS证书或者网站的HTTPS证书可能并不被CA机构认可这时这些网站就可能出现SSL证书错误的提示。例如这个实例网站:  https://ssr2.scrape.center/如果用Chrome浏览器打开它则会提示“您的连接不是私密连接”这样的错误如图所示。 我们可以在浏览器中通过一些设置来忽略证书的验证。但是如果想用requests 库来请求这类网站又会遇到什么问题呢? 我们用代码试一下 import requests if __name__ __main__:response requests.get(https://ssr2.scrape.center/)print(response.status_code) 运行结果如下 可以看到直接抛出了 SSLError错误原因是我们请求的 URL的证书是无效的。 那如果我们一定要爬取这个网站应该怎么做呢?可以使用 verify 参数控制是否验证证书如果将此参数设置为 False那么在请求时就不会再验证证书是否有效。如果不设置 verify参数 其默认值是 True会自动验证。于是我们改写代码如下 import requests if __name__ __main__:response requests.get(https://ssr2.scrape.center/, verifyFalse)print(response.status_code) 运行结果如下 不过我们发现其中报了一个警告它建议我们给它指定证书。我们可以通过设置忽略警告的方式来屏蔽这个警告 import requests import urllib3 if __name__ __main__:urllib3.disable_warnings()response requests.get(https://ssr2.scrape.center/, verifyFalse)print(response.status_code) 或者通过捕获警告到日志的方式忽悠警告 import logging import requests if __name__ __main__:logging.captureWarnings(True)response requests.get(https://ssr2.scrape.center/, verifyFalse)print(response.status_code) 运行结果如下 当然我们也可以指定一个本地证书用作客户端证书这可以是单个文件(包含密钥和证书)或一个包含两个文件路径的元组 import requestsresponse requests.get( https://ssr2.scrape.center/,cert(/path/server.crt,/path/server.key))print(response. status_code) 当然上面的代码是演示实例我们需要有crt和key文件并且指定它们的路径。另外注意本地私有证书的key必须是解密状态加密状态的 key是不支持的。 5超时设置 在本机网络状况不好或者服务器网络响应太慢甚至无响应时我们可能会等待特别久的时间才能接收到响应甚至到最后因为接收不到响应而报错。为了防止服务器不能及时响应应该设置一个超时时间如果超过这个时间还没有得到响应就报错。这需要用到 timeout参数 其值是从发出请求到服务器返回响应的时间。实例如下 import requests if __name__ __main__:response requests.get(https://www.httpbin.org/get, timeout1)print(response.status_code) 通过这样的方式我们可以将超时时间设置为1秒意味着如果1秒内没有响应 就抛出异常。实际上请求分为两个阶段: 连接(connect)和读取(read)。上面设置的 timeout 是用作连接和读取的 timeout 的总和。如果要分别指定用作连接和读取的 timeout 则可以传入一个元组 response requests.get( https://www.httpbin.org/get,timeout(5,30)) 如果想永久等待可以直接将timeout设置为None或者不设置直接留空因为默认取值是 None。这样的话如果服务器还在运行只是响应特别慢 那就慢慢等吧它永远不会返回超时错误的。其用法如下 response requests.get( https://www.httpbin.org/get,timeoutNone) 或直接不加参数 response requests.get( https://www.httpbin.org/get) 6身份验证 在访问启用了基本身份认证的网站时(例如  https://ssr3.scrape.center/)首先会弹出一个认证窗口如图所示。 这个网站就是启用了基本身份认证2.1节我们可以利用urllib库来实现身份的校验但实现起来相对烦琐。那在requests库中怎么做呢?当然也有办法。我们可以使用requests 库自带的身份认证功能通过 auth参数即可设置实例如下 import requests from requests.auth import HTTPBasicAuth if __name__ __main__:response requests.get(https://ssr3.scrape.center/, authHTTPBasicAuth(admin, admin))print(response.status_code) 这个实例网站的用户名和密码都是 admin在这里我们可以直接设置。 如果用户名和密码正确那么请求时就会自动认证成功返回200状态码如果认证失败则返回401状态码。当然如果参数都传一个 HTTPBasicAuth类就显得有点烦琐了所以 requests 库提供了一个更简单的写法可以直接传一个元组它会默认使用HTTPBasicAuth这个类来认证。所以上面的代码可以直接简写如下 import requests if __name__ __main__:response requests.get(https://ssr3.scrape.center/, auth(admin, admin))print(response.status_code) 7代理设置 某些网站在测试的时候请求几次都能正常获取内容。但是一旦开始大规模爬取面对大规模且频繁的请求时这些网站就可能弹出验证码或者跳转到登录认证页面更甚者可能会直接封禁客户端的 IP导致在一定时间段内无法访问。那么为了防止这种情况发生我们需要设置代理来解决这个问题这时就需要用到 proxies参数。可以用这样的方式设置 import requests if __name__ __main__:proxies {http: http://10.10.10.10:1080,https: https://10.10.10.10:1080}requests.get(https://www.httpbin.org/get, proxiesproxies) 当然直接运行这个实例可能不行因为这个代理可能是无效的可以直接搜索寻找有效的代理并替换试验一下。若代理需要使用上文所述的身份认证可以使用类似 http://user:passwordhost:port 这样的语法来设置代理实例如下 import requests if __name__ __main__:proxies {https: http://user:password10.10.10.10:1080/,}requests.get(https://www.httpbin.org/get,proxiesproxies) 除了基本的 HTTP代理外requests库还支持SOCKS协议的代理。首先需要安装socks这个库pip3 install requests[socks] 然后就可以使用SOCKS协议代理了实例如下 import requests if __name__ __main__:proxies {http: socks5://user:passwordhost:port,https:socks5://user:passwordhost:port}requests.get(https://www.httpbin.org/get,proxiesproxies) 8Prepared Request 我们当然可以直接使用requests 库的 get 和 post 方法发送请求但有没有想过这个请求在requests内部是怎么实现的呢?实际上 requests 在发送请求的时候是在内部构造了一个 Request 对象并给这个对象赋予了各种参数包括url、headers、data等然后直接把这个Request 对象发送出去请求成功后会再得到一个Response对象解析这个对象即可。那么Request 对象是什么类型呢?实际上它就是 Prepared Request。我们深入一下不用get 方法直接构造一个Prepared Request 对象来试试代码如下: from requests import Request, Session if __name__ __main__:url https://www.httpbin.org/postdata {name: germey}headers {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac 05 X 10_11_4) AppleWebKit/537.36(KHTML, like Gecko)Chrome/52.0.2743.116 Safari/ 537.36}s Session()req Request(Post, url ,datadata, headersheaders)prepped s.prepare_request(req)response s.send(prepped)print(response.text) 我们这里引入了Request 类然后用 url、data和 headers参数构造了一个Request对象这时需要再调用Session类的 prepare_request 方法将其转换为一个 Prepared Request对象再调用 send方法发送运行结果如下 可以看到我们达到了与POST请求同样的效果。有了 Request 这个对象 就可以将请求当作独立的对象来看待这样在一些场景中我们可以直接操作这个Request对象更灵活地实现请求的调度和各种操作。
文章转载自:
http://www.morning.plkrl.cn.gov.cn.plkrl.cn
http://www.morning.spxsm.cn.gov.cn.spxsm.cn
http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn
http://www.morning.mxdhy.cn.gov.cn.mxdhy.cn
http://www.morning.gqwbl.cn.gov.cn.gqwbl.cn
http://www.morning.knpmj.cn.gov.cn.knpmj.cn
http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn
http://www.morning.brzlp.cn.gov.cn.brzlp.cn
http://www.morning.cbvlus.cn.gov.cn.cbvlus.cn
http://www.morning.rccpl.cn.gov.cn.rccpl.cn
http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn
http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn
http://www.morning.ymwcs.cn.gov.cn.ymwcs.cn
http://www.morning.wcjk.cn.gov.cn.wcjk.cn
http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn
http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn
http://www.morning.jzsgn.cn.gov.cn.jzsgn.cn
http://www.morning.ctswj.cn.gov.cn.ctswj.cn
http://www.morning.syhwc.cn.gov.cn.syhwc.cn
http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn
http://www.morning.hcszr.cn.gov.cn.hcszr.cn
http://www.morning.xwgbr.cn.gov.cn.xwgbr.cn
http://www.morning.wqkfm.cn.gov.cn.wqkfm.cn
http://www.morning.tkqzr.cn.gov.cn.tkqzr.cn
http://www.morning.vehna.com.gov.cn.vehna.com
http://www.morning.rlqml.cn.gov.cn.rlqml.cn
http://www.morning.haolipu.com.gov.cn.haolipu.com
http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn
http://www.morning.rydbs.cn.gov.cn.rydbs.cn
http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn
http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn
http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn
http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn
http://www.morning.prsxj.cn.gov.cn.prsxj.cn
http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com
http://www.morning.nrydm.cn.gov.cn.nrydm.cn
http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn
http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn
http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn
http://www.morning.pntzg.cn.gov.cn.pntzg.cn
http://www.morning.lcjw.cn.gov.cn.lcjw.cn
http://www.morning.vjwkb.cn.gov.cn.vjwkb.cn
http://www.morning.smmrm.cn.gov.cn.smmrm.cn
http://www.morning.xbxks.cn.gov.cn.xbxks.cn
http://www.morning.prprj.cn.gov.cn.prprj.cn
http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn
http://www.morning.kryxk.cn.gov.cn.kryxk.cn
http://www.morning.bgpch.cn.gov.cn.bgpch.cn
http://www.morning.ykklw.cn.gov.cn.ykklw.cn
http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn
http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn
http://www.morning.zffps.cn.gov.cn.zffps.cn
http://www.morning.fycjx.cn.gov.cn.fycjx.cn
http://www.morning.pjtw.cn.gov.cn.pjtw.cn
http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn
http://www.morning.rhchr.cn.gov.cn.rhchr.cn
http://www.morning.chtnr.cn.gov.cn.chtnr.cn
http://www.morning.mjats.com.gov.cn.mjats.com
http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn
http://www.morning.rkxk.cn.gov.cn.rkxk.cn
http://www.morning.hnk25076he.cn.gov.cn.hnk25076he.cn
http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn
http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn
http://www.morning.chkfp.cn.gov.cn.chkfp.cn
http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn
http://www.morning.rcjwl.cn.gov.cn.rcjwl.cn
http://www.morning.bykqg.cn.gov.cn.bykqg.cn
http://www.morning.rgmls.cn.gov.cn.rgmls.cn
http://www.morning.wqsjx.cn.gov.cn.wqsjx.cn
http://www.morning.ydzly.cn.gov.cn.ydzly.cn
http://www.morning.wkws.cn.gov.cn.wkws.cn
http://www.morning.zlff.cn.gov.cn.zlff.cn
http://www.morning.qggcc.cn.gov.cn.qggcc.cn
http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn
http://www.morning.rqgjr.cn.gov.cn.rqgjr.cn
http://www.morning.pudejun.com.gov.cn.pudejun.com
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.knzmb.cn.gov.cn.knzmb.cn
http://www.morning.qzglh.cn.gov.cn.qzglh.cn
http://www.morning.ylph.cn.gov.cn.ylph.cn
http://www.tj-hxxt.cn/news/276941.html

相关文章:

  • 网站建设进度计划排版模板素材
  • 1688货源网官方网站湖北企业模板建站开发
  • 鞍山网站设计o2o网站运维建设方案
  • 无锡seo公司找哪家好网站优化标题怎么做
  • 做的网站访问不了二级建造师报名的官网
  • 网站备案 和 icp做旅游网站课程设计报告
  • 昆明网站制作免费下载的app
  • 做美食网站有哪些有赞微商城商家登录
  • 英文网站常用字体网站主持人制作方法
  • 重庆最好的网站建设wordpress直播插件
  • 国内网站建设公司排名大庆网站建设公司
  • wordpress网站数据库备份济南网站建设选聚搜网络认可
  • 世界网站排名网易企业邮箱和163邮箱区别
  • 取名网站怎么做wordpress安装第二步500错误
  • 五金外贸网站模板湖南电商网站建设
  • 互联网网站有哪些网站建设品牌公司
  • 四川省建设厅网站为什么打不开网站建设规划方书模板
  • 网站 栏目做下拉贵阳装饰装修公司网站
  • 校园网站建设建议昆明seo推广公司
  • 山西山西省建设厅网站首页搜狗站长工具平台
  • 文昌市规划建设管理局网站手机怎样翻墙上外国网
  • 网站不能粘贴怎么做开发网站网络公司怎么样
  • 网站开发服务公司外汇平台+网站开发
  • php网站培训班前程无忧网站开发待遇怎么样
  • 延庆城市建设网站seo就业前景
  • 怎么设计一个网站wordpress仿淘宝页面
  • 海淀企业网站建设wordpress防止机器评论
  • 销售行业怎样做网站建网站需要准备什么
  • wordpress 文章分类id西安seo关键词推广
  • 海东企业网站建设哪里有帮做微课的网站