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

镇江网络违法网站做木皮的网站

镇江网络违法网站,做木皮的网站,百度网站v2升级到v3怎么做,如今的网站建设使用urllib 了解一下 urllib 库#xff0c;它是 Python 内置的 HTTP 请求库#xff0c;也就是说不需要额外安装即可使用。它包含如下 4 个模块。 request#xff1a;它是最基本的 HTTP 请求模块#xff0c;可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样…使用urllib 了解一下 urllib 库它是 Python 内置的 HTTP 请求库也就是说不需要额外安装即可使用。它包含如下 4 个模块。 request它是最基本的 HTTP 请求模块可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样只需要给库方法传入 URL 以及额外的参数就可以模拟实现这个过程了。 error异常处理模块如果出现请求错误我们可以捕获这些异常然后进行重试或其他操作以保证程序不会意外终止。 parse一个工具模块提供了许多 URL 处理方法比如拆分、解析、合并等。 robotparser主要是用来识别网站的 robots.txt 文件然后判断哪些网站可以爬哪些网站不可以爬它其实用得比较少。 发送请求 urlopen response urllib.request.urlopen(‘https://www.python.org’) 可选参数 data 参数如果要添加该参数需要使用 bytes 方法将参数转化为字节流编码格式的内容即 bytes 类型。另外如果传递了这个参数则它的请求方式就不再是 GET 方式而是 POST 方式。 timeout 参数timeout 参数用于设置超时时间单位为秒意思就是如果请求超出了设置的这个时间还没有得到响应就会抛出异常。如果不指定该参数就会使用全局默认时间。它支持 HTTP、HTTPS、FTP 请求。 Request request urllib.request.Request(‘https://python.org’) response urllib.request.urlopen(request) 参数 url 用于请求 URL这是必传参数其他都是可选参数 data 如果要传必须传 bytes字节流类型的。 headers 是一个字典它就是请求头 unverifiable 表示这个请求是否是无法验证的默认是 False意思就是说用户没有足够权限来选择接收这个请求的结果 method 是一个字符串用来指示请求使用的方法 各种 Handler 子类继承这个 BaseHandler 类举例如下。 HTTPDefaultErrorHandler 用于处理 HTTP 响应错误错误都会抛出 HTTPError 类型的异常。 HTTPRedirectHandler 用于处理重定向。 HTTPCookieProcessor 用于处理 Cookies。 ProxyHandler 用于设置代理默认代理为空。 HTTPPasswordMgr 用于管理密码它维护了用户名密码的表。 HTTPBasicAuthHandler 用于管理认证如果一个链接打开时需要认证那么可以用它来解决认证问题。 处理异常 URLError URLError 类来自 urllib 库的 error 模块它继承自 OSError 类是 error 异常模块的基类由 request 模块产生的异常都可以通过捕获这个类来处理。 它具有一个属性 reason即返回错误的原因。 HTTPError: 它是 URLError 的子类专门用来处理 HTTP 请求错误比如认证请求失败等。它有如下 3 个属性。 code返回 HTTP 状态码比如 404 表示网页不存在500 表示服务器内部错误等。 reason同父类一样用于返回错误的原因。 headers返回请求头。 解析链接 urlparse实现 URL 的识别和分段 urlunparse将分段合并为url urlsplit这个方法和 urlparse 方法非常相似只不过它不再单独解析 params 这一部分只返回 5 个结果 urlunsplit与 urlunparse 方法类似它也是将链接各个部分组合成完整链接的方法传入的参数也是一个可迭代对象例如列表、元组等唯一的区别是长度必须为 5 urljoin我们可以提供一个 base_url基础链接作为第一个参数将新的链接作为第二个参数 urlencode为了更加方便地构造参数我们会事先用字典来表示。要转化为 URL 的参数时只需要调用该方法即可。 parse_qs有一串 GET 请求参数利用 parse_qs 方法就可以将它转回字典 parse_qsl用于将参数转化为元组组成的列表 unquote进行 URL 解码 quote该方法可以将内容转化为 URL 编码的格式。URL 中带有中文参数时有时可能会导致乱码的问题此时用这个方法可以将中文字符转化为 URL 编码 使用requests 抓取网页 import requests import reheaders {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 } r requests.get(https://www.zhihu.com/explore, headersheaders) pattern re.compile(explore-feed.*?question_link.*?(.*?)/a, re.S) titles re.findall(pattern, r.text) print(titles)目前可以使用的’User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36’ 对于网页的内容这里使用正则表达式进行匹配 抓取二进制数据 图片、音频、视频这些文件本质上都是由二进制码组成的由于有特定的保存格式和对应的解析方式我们才可以看到这些形形色色的多媒体。所以想要抓取它们就要拿到它们的二进制码。 以 GitHub 的站点图标为例来看一下 import requestsr requests.get(https://github.com/favicon.ico) print(r.text) print(r.content)运行结果 可以注意到前者出现了乱码后者结果前带有一个 b这代表是 bytes 类型的数据。由于图片是二进制数据所以前者在打印时转化为 str 类型也就是图片直接转化为字符串这理所当然会出现乱码。 接着我们将刚才提取到的图片保存下来 r requests.get(https://github.com/favicon.ico) with open(favicon.ico, wb) as f:f.write(r.content)同样地音频和视频文件也可以用这种方法获取。 添加headers 与 urllib.request 一样我们也可以通过 headers 参数来传递头信息。 POST请求 data {name: germey, age: 22} r requests.post(http://httpbin.org/post, datadata)响应 发送请求后得到的自然就是响应。在上面的实例中我们使用 text 和 content 获取了响应的内容。此外还有很多属性和方法可以用来获取其他信息比如状态码、响应头、Cookies 等 输出 status_code 属性得到状态码输出 headers 属性得到响应头输出 cookies 属性得到 Cookies输出 url 属性得到 URL输出 history 属性得到请求历史。 requests 还提供了一个内置的状态码查询对象 requests.codes 下面列出了返回码和相应的查询条件方便编程时使用 # 信息性状态码 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\\, ✗), 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)高级用法 再来了解下 requests 的一些高级用法如文件上传、Cookies 设置、代理设置等 文件上传 假设上传刚才的图标文件 files {file: open(favicon.ico, rb)} r requests.post(http://httpbin.org/post, filesfiles) print(r.text)http://httpbin.org/post可用来进行文件上传的测试会返回相应的数据 Cookies 获取 Cookies 的过程 r requests.get(https://www.baidu.com) print(r.cookies) for key, value in r.cookies.items():print(key value)首先调用 cookies 属性即可成功得到 Cookies可以发现它是 RequestCookieJar 类型。然后用 items 方法将其转化为元组组成的列表遍历输出每一个 Cookie 的名称和值实现 Cookie 的遍历解析。 将自己的cookie添加到请求头中即可登陆自己的账号。 会话维持 在 requests 中如果直接利用 get 或 post 等方法的确可以做到模拟网页的请求但是这实际上是相当于不同的会话也就是说相当于你用了两个浏览器打开了不同的页面。 第一个请求利用 post 方法登录了某个网站第二次想获取成功登录后的自己的个人信息你又用了一次 get 方法去请求个人信息页面。实际上这相当于打开了两个浏览器是两个完全不相关的会话能成功获取个人信息吗那当然不能。 Session 对象可以方便地维护一个会话而且不用担心 cookies 的问题它会帮我们自动处理好 requests.get(http://httpbin.org/cookies/set/number/123456789) r requests.get(http://httpbin.org/cookies)这里我们请求了一个测试网址 http://httpbin.org/cookies/set/number/123456789。请求这个网址时可以设置一个 cookie名称叫作 number内容是 123456789随后又请求了 http://httpbin.org/cookies此网址可以获取当前的 Cookies。 运行结果如下 {“cookies”: {} } 并没有获取到cookieCookie 保存在客户端浏览器Session 保存在服务器端。 使用session s requests.Session() s.get(http://httpbin.org/cookies/set/number/123456789) r s.get(http://httpbin.org/cookies) print(r.text)运行结果 { “cookies”: {“number”: “123456789”} } SSL证书验证 requests 还提供了证书验证的功能。当发送 HTTP 请求的时候它会检查 SSL 证书我们可以使用 verify 参数控制是否检查此证书。其实如果不加 verify 参数的话默认是 True会自动验证。 如果请求一个 HTTPS 站点但是证书验证错误的页面时就会报SSL错误将参数设置为False即可 response requests.get(https://www.12306.cn, verifyFalse)代理设置 对于某些网站在测试的时候请求几次能正常获取内容。但是一旦开始大规模爬取对于大规模且频繁的请求网站可能会弹出验证码或者跳转到登录认证页面更甚者可能会直接封禁客户端的 IP导致一定时间段内无法访问。 那么为了防止这种情况发生我们需要设置代理来解决这个问题这就需要用到 proxies 参数。可以用这样的方式设置 import requestsproxies {http: http://10.10.1.10:3128,https: http://10.10.1.10:1080, }requests.get(https://www.taobao.com, proxiesproxies)超时设置 在本机网络状况不好或者服务器网络响应太慢甚至无响应时我们可能会等待特别久的时间才可能收到响应甚至到最后收不到响应而报错。使用timeout参数计算发出请求到服务器返回响应的时间。请求分为连接读取两个阶段timeout为这两者的总和。 身份认证 在配置服务器设置或进入一些管理页面如rabbitmq的管理页面会需要我们进行身份验证即输入用户名和密码才能进行配置。此时可以使用 requests 自带的身份认证功能示例如下 import requests from requests.auth import HTTPBasicAuth r requests.get(http://localhost:5000, authHTTPBasicAuth(username, password)) print(r.status_code)requests 提供了一个更简单的写法可以直接传一个元组它会默认使用 HTTPBasicAuth 这个类来认证 r requests.get(http://localhost:5000, auth(username, password))Prepared Request 可以将请求表示为数据结构其中各个参数都可以通过一个 Request 对象来表示 from requests import Request, Sessionurl http://httpbin.org/post data {name: germey} headers {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 } s Session() req Request(POST, url, datadata, headersheaders) prepped s.prepare_request(req) r s.send(prepped) print(r.text)
http://wiki.neutronadmin.com/news/136835/

相关文章:

  • 家装网站模板下载网络技术学习网站
  • 一个在线做笔记的网站网站主机多大
  • 如何用wordpress做网站最新军事战争新闻消息
  • 湖北网站建设制作互联网100个创业项目
  • html5的网站设计网站除了域名还要什么
  • 建站一条龙设计制作wordpress 加载失败
  • asp.net做网站步骤百度优化是什么意思
  • 网站开发维护合同范本没有公司自己做网站
  • 方案库网站温州网站网络公司
  • 济宁500元网站建设杭州市建设信用网网站
  • 建立一个购物网站需要多少钱wordpress站点名字体
  • 国产网站开发工具公司诚信通旺铺网站建设
  • 网站建设方案书 百度文库打开百度搜索网站
  • 响应式网站宽度怎么做网站快捷方式
  • 宁波网站建设设计制作方案与价格网络营销方式举例
  • 医药网站素材网站建设实训的目的
  • 湛江制作网站多少钱个人网站建设策划书怎么写
  • 莱州环球网站建设贵阳观山湖区网站建设
  • 上海正规做网站公司电话杭州旺道企业服务有限公司
  • 怎样跟网站做优化呢网站设置什么意思
  • 想要黑掉一个网站 要怎么做网站404 模板
  • 网站log文件示例自己建设小城市网站得多少钱
  • 文交所网站建设方案重庆网站建设seo公司哪家好
  • 上海高端网站建设服务公电子商务网站建设课程设计报告
  • 返利网站制作网站建设营业执照如何写
  • 如何推广外贸网站丁的老头seo博客
  • 总部基地网站建设知识管理软件
  • 百家号网站开发属于什么领域彩页设计培训
  • 获取网站缩略图的asp代码中国住房城乡建设部网站
  • 生鲜农产品网站建设wordpress商业版