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

网站根目录是什么意思用dw做的十二星座网站免费

网站根目录是什么意思,用dw做的十二星座网站免费,东莞核酸检测收费,建设项目查询官网Python爬虫技术系列-01请求响应获取-urllib库 1 urllib库1.1 urllib概述1.1.1 urllib简介1.1.2 urllib的robotparser模块1.1.3 request模块1.1.4 Error1.1.5 parse模块1.1.6 百度翻译案例 1.2 urllib高级应用1.2.1Opener1.2.2 代理设置 1 urllib库 参考连接#xff1a; https… Python爬虫技术系列-01请求响应获取-urllib库 1 urllib库1.1 urllib概述1.1.1 urllib简介1.1.2 urllib的robotparser模块1.1.3 request模块1.1.4 Error1.1.5 parse模块1.1.6 百度翻译案例 1.2 urllib高级应用1.2.1Opener1.2.2 代理设置 1 urllib库 参考连接 https://zhuanlan.zhihu.com/p/412408291 1.1 urllib概述 1.1.1 urllib简介 Urllib是python内置的一个http请求库不需要额外的安装。只需要关注请求的链接参数提供了强大的解析功能 Urllib库有四个模块requesterror parse robotparser request发起请求重要 error处理错误 parse解析RUL或目录等 robotparser(不怎么用)解析网站的robot.txt 1.1.2 urllib的robotparser模块 Robots协议也称作爬虫协议、机器人协议它的全名是网络爬虫排除标准(RobotsExclusingProtocol)主要用来告诉爬虫和搜索引擎哪些网页可以抓取哪些网页不可以抓取。该协议的内容通常存放在名叫robots.txt的文本文件中这个文件一般位于网站的根目录下。 User-agent后的*表示该规则对所有的爬虫有效/robot目录不允许访问仅允许访问/test/print目录 看一下淘宝的robots.txt https://www.taobao.com/robots.txt User-agent: Baiduspider Disallow: /User-agent: baiduspider Disallow: /基于robots查看是否可以爬取 from urllib.robotparser import RobotFileParser robotRobotFileParser() # 创建一个解析器用来存储Robots协议内容 robot.set_url(https://www.taobao.com/robots.txt) # set_url()用于设置robots.txt文件的路径 robot.read() # //read()用于读取并分析robots.txt文件的内容并把结果存储到解析器中print(robot) # 输出robot协议 print(**10)print(robot.can_fetch(*,https://www.taobao.com/test.js)) # can_fetch()用于判断指定的搜索引擎是否能抓取这个URL print(robot.can_fetch(Baiduspider,https://www.taobao.com/test.js))输出为 User-agent: Baiduspider Disallow: /User-agent: baiduspider Disallow: / ********** True False1.1.3 request模块 请求方法 urllib.request.urlopen(url, dataNone, [timeout, ]*) url地址可以是字符串也可以是一个Request对象 data请求参数 timeout设置超时 # 爬虫就是模拟用户向服务器发起请求服务器会返回对应数据 # 数据抓包使用chrome尽量不要使用国产浏览器 # F12打开界面点击network刷新会显示网页的请求常见的请求有GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE其中GET 和 POST 最常用 # GET请求把请求参数都暴露在URL上 # POST请求的参数放在request body一般会对密码进行加密 # 请求头用来模拟一个真实用户 # 相应状态码200表示成功推荐一个测试网站用于提交各种请求http://httpbin.org/该网站的更多的用法自行搜索 # 引入请求模块 import urllib.request # 发起请求,设置超时为1s response urllib.request.urlopen(http://httpbin.org/, timeout 1)print(response.status) # 状态码判断是否成功,200 print(response.getheaders()) # 响应头 得到的一个元组组成的列表 print(response.getheader(Server)) #得到特定的响应头 print(response.getheader(User-Agent)) #得到特定的响应头 # 使用read()读取整个页面内容使用decode(utf-8)对获取的内容进行编码 print(response.read().decode(utf-8))输出为: 200 [(Date, Fri, 22 Sep 2023 01:23:18 GMT), (Content-Type, text/html; charsetutf-8), (Content-Length, 9593), (Connection, close), (Server, gunicorn/19.9.0), (Access-Control-Allow-Origin, *), (Access-Control-Allow-Credentials, true)] gunicorn/19.9.0 None !DOCTYPE html html langenheadmeta charsetUTF-8titlehttpbin.org/titlelink hrefhttps://fonts.googleapis.com/css?familyOpenSans:400,700|SourceCodePro:300,600|TitilliumWeb:400,600,700relstylesheetlink relstylesheet typetext/css href/flasgger_static/swagger-ui.csslink relicon typeimage/png href/static/favicon.ico sizes64x64 32x32 16x16 /stylehtml {box-sizing: border-box;overflow: -moz-scrollbars-vertical;overflow-y: scroll;}*,*:before,*:after {box-sizing: inherit;}body {margin: 0;background: #fafafa;}/style /headbody ... /body/html POST请求 import urllib.parse import urllib.request # data需要的是字节流编码格式的内容此时请求方式为post data bytes(urllib.parse.urlencode({name: WenAn}), encoding utf-8) response urllib.request.urlopen(http://httpbin.org/post, data data) print(response.read().decode(utf-8))输出为: {args: {}, data: , files: {}, form: {name: WenAn}, headers: {Accept-Encoding: identity, Content-Length: 10, Content-Type: application/x-www-form-urlencoded, Host: httpbin.org, User-Agent: Python-urllib/3.10, X-Amzn-Trace-Id: Root1-650ced1b-365667a33f287edd7b5579ab}, json: null, origin: 120.194.158.199, url: http://httpbin.org/post }通过返回的内容可以返现包含了User-Agent数据这是因为浏览器发起请求时都会有请求头header但urlopen无法添加其他参数这会让服务器识别出我们是一个爬虫因此我们需要声明一个request对象来添加header import urllib.request import urllib.parseurl http://httpbin.org/post # 添加请求头 headers {user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36, Host:httpbin.org} dict {name:WenAn } data bytes(urllib.parse.urlencode(dict), encoding utf-8) request urllib.request.Request(url, datadata, headersheaders, methodPOST) response urllib.request.urlopen(request) # response urllib.request.urlopen(http://httpbin.org/post, data data) print(response.read().decode(utf-8))输出为: {args: {}, data: , files: {}, form: {name: WenAn}, headers: {Accept-Encoding: identity, Content-Length: 10, Content-Type: application/x-www-form-urlencoded, Host: httpbin.org, User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36, X-Amzn-Trace-Id: Root1-650cee11-094d85e314f07a847244a399}, json: null, origin: 120.194.158.199, url: http://httpbin.org/post }输出的数据中User-Agent值为 “Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36” urlretrieve将数据下载到本地 import urllib.request urllib.request.urlretrieve(https://www.youdao.com,youdao.html) urllib.request.urlretrieve(https://www.httpbin.org/get,httpbin/get.html)from urllib import request, error #导入request和error模块 def schedule(num,size,tsize):回调函数,num:当前已经下载的块;size:每次传输的块大小;tsize:网页文件总大小if tsize 0:percent 0else:percent num * size / tsizeif percent 1.0:percent 1.0percent percent * 100print(\r[%-100s] %.2f%% % ( * int(percent), percent),end)url https://oimageb3.ydstatic.com/image?\ id5951384821510112623productxue # 下载文件的url path rimg1.jpg # 文件下载后保存的本地路径 request.urlretrieve(url, path, schedule) print(\r\n url download successfully!)输出为: 1.1.4 Error 以上讲述的是使用urlopen发送请求的过程而且是正常情况下的情形。若是非正常情况比如url地址是错误的或者网络不通那么就会抛出异常。当有异常发生时需要利用python的异常控制机制也就是使用try…except语句来捕获异常进行处理否则程序就会异常退出。在使用try…except时except子句一般会加上错误类型以便针对不同的错误类型采取相应的措施。 Error模块下有三个异常类 URLError 处理程序在遇到问题时会引发此异常或其派生的异常只有一个reason属性 HTTPError 是URLError的一个子类有更多的属性如code reasonheaders适用于处理特殊 HTTP 错误例如作为认证请求的时候。 ContentTooShortError 此异常会在 urlretrieve() 函数检测到已下载的数据量小于期待的数据量由 Content-Length 头给定时被引发。 content 属性中将存放已下载可能被截断的数据。 from urllib import request, error try:# 打开httpbin里面的a.html页面因为它根本不存在所以会抛出异常response request.urlopen(http://httpbin.org/a.html) except error.URLError as e:print(e.reason) #Not Found输出为: NOT FOUNDHTTPError案例 # 把URLError换成了HTTPError from urllib import request, error try:# 打开httpbin里面的a.html页面因为它根本不存在所以会抛出异常response request.urlopen(http://httpbin.org/a.html) except error.HTTPError as e:print(e.reason)print(e.code)print(e.headers)输出为: NOT FOUND 404 Date: Fri, 22 Sep 2023 01:40:11 GMT Content-Type: text/html Content-Length: 233 Connection: close Server: gunicorn/19.9.0 Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true1.1.5 parse模块 Parse模块 parse模块定义了url的标准接口实现url的各种抽取解析合并编码解码 编码 urlencode()介绍—参数编码 它将字典构形式的参数序列化为url编码后的字符串在前面的request模块有用到 import urllib.parse dict {name:WenAn,age: 20 } params urllib.parse.urlencode(dict) print(params)输出为: nameWenAnage20quote()介绍—中文URL编解码 import urllib.parse params 少年强则国强 base_url https://www.baidu.com/s?wd url base_url urllib.parse.quote(params) print(url) # https://www.baidu.com/s?wd%E5%B0%91%E5%B9%B4%E5%BC%BA%E5%88%99%E5%9B%BD%E5%BC%BA# 使用unquote()对中文解码 url1 https://www.baidu.com/s?wd%E5%B0%91%E5%B9%B4%E5%BC%BA%E5%88%99%E5%9B%BD%E5%BC%BA print(urllib.parse.unquote(url1)) # https://www.baidu.com/s?wd少年强则国强中文在字典中案例 from urllib import parse from urllib import request urlhttp://www.baidu.com/s? dict_data{wd:百度翻译} #unlencode() 将字典{k 1v 1k2v2}转化为k1v1k2v2 url_dataparse.urlencode(dict_data) #urldatawd%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91 print(url_data)#读取URL响应结果 res_datarequest.urlopen((urlurl_data)).read()#用utf 8对响应结果编码 datares_data.decode(utf-8) print(data)输出为: wd%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91 !DOCTYPE html html langzh-CN headmeta charsetutf-8title百度安全验证/title... /head body... /body /html 在爬取过程中当获得一个URL时如果想把这个URL中的各个组成部分分解后使用那么就要用到url.parse()和url.split()。 使用urlparse()进行URL的解析 from urllib import parse url http://www.youdao.com/s?usernamespider result parse.urlparse(url) print (urlparse解析出来的结果:\n%s%str(result))输出为: urlparse解析出来的结果: ParseResult(schemehttp, netlocwww.youdao.com, path/s, params, queryusernamespider, fragment)urlsplit()方法和urlparse()方法的作用相似,区别在于它不再单独解析params部分,而仅返回5个结果将params合并到path中。 使用urlsplit()进行URL的解析。 from urllib import parse url http://www.youdao.com/s?usernamespider result parse.urlsplit(url) print (urlsplit解析出来的结果:\n%s%str(result))输出为: urlsplit解析出来的结果: SplitResult(schemehttp, netlocwww.youdao.com, path/s, queryusernamespider, fragment)1.1.6 百度翻译案例 import urllib.request import urllib.parse url https://fanyi.baidu.com/sug header {User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 } keyword input(请输入您要查询的单词\n) data { kw:keyword} data urllib.parse.urlencode(data).encode(utf‐8) request urllib.request.Request(urlurl,headersheader,datadata) response urllib.request.urlopen(request) print(response.read().decode(utf-8)) 输出为: 请输入您要查询的单词 你好 {“errno”:0,“data”:[{“k”:“\u4f60\u597d”,“v”:“hello; hi; How do you do!”},{“k”:“\u4f60\u597d\u5417”,“v”:“How do you do?”},{“k”:“\u4f60\u597d\uff0c\u964c\u751f\u4eba”,“v”:“[\u7535\u5f71]Hello Stranger”}],“logid”:2836022906} 1.2 urllib高级应用 1.2.1Opener opener是 urllib.request.OpenerDirector 的实例如上文提到的urlopen便是一个已经构建好的特殊opener但urlopen()仅提供了最基本的功能如不支持代理cookie等 自定义Opener的流程 使用相关的 Handler处理器来创建特定功能的处理器对象通过 urllib.request.build_opener()方法使用处理器对象 创建自定义opener对象使用自定义的opener对象 调用open()方法发送请求 关于全局Opener 如果要求程序里面的所有请求都使用自定义的opener使用urllib.request.install_opener() import urllib.request # 创建handler http_handler urllib.request.HTTPHandler() # 创建opener opener urllib.request.build_opener(http_handler) # 创建Request对象 request urllib.request.Request(http://httpbin.org/get)# 局部opener,只能使用.open()来访问 # response opener.open(request)# 全局opener之后调用urlopen都将使用这个自定义opener urllib.request.install_opener(opener) response urllib.request.urlopen(request)print(response.read().decode(utf8))输出为: {args: {}, headers: {Accept-Encoding: identity, Host: httpbin.org, User-Agent: Python-urllib/3.10, X-Amzn-Trace-Id: Root1-650cf628-059816f8524cf7ec7d9cee6e}, origin: 120.194.158.199, url: http://httpbin.org/get }1.2.2 代理设置 推荐几个提供免费代理服务的网站 http://www.xiladaili.com/ https://www.kuaidaili.com/free/ https://ip.jiangxianli.com/?page1 import urllib.request# 创建handler proxy_handler urllib.request.ProxyHandler({http: http://182.34.103.79:9999 }) # 创建opener opener urllib.request.build_opener(proxy_handler) header {User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 } request urllib.request.Request(https://www.httpbin.org/get, headersheader)# 配置全局opener urllib.request.install_opener(opener) response urllib.request.urlopen(request) print(response.read().decode(utf-8)) 代理设置未成功
http://www.zqtcl.cn/news/564974/

相关文章:

  • 网站建设的公司有发展吗织梦婚纱网站模板
  • 淘宝销售书网站建设方案wordpress调用评论数据
  • 搭建网站需要什么软件苏州吴中区建设局工程网站
  • 长沙市网站推广公司wordpress 弹窗登录插件
  • 网站策划怎么做内容朔州网站建设公司
  • 宁波拾谷网站建设蚌埠网站建设中心
  • 青岛专业设计网站公司加拿大广播公司
  • 盘锦市建设局网站地址八桂职教网技能大赛
  • 投资建设一个网站多少钱和淘宝同时做电商的网站
  • 做动物网站的素材icp备案 网站备案
  • 找人建网站唐山网络运营推广
  • 福建省住房建设厅网站6网站简历模板
  • 医疗网站模版杭州工商注册
  • 正保建设工程网站logo创意
  • 简洁个人博客网站模板下载用自己电脑做网站服务器-phpstudy+花生壳
  • 网页模板下载哪个网站好多个域名指定同一个网站好处
  • 北京网站建设有哪些公司微网站的案例
  • 常德经开区网站官网域名备案关闭网站吗
  • 做宠物网站的工作室做网站租服务器
  • 2017做那个网站致富网站换源码如何保留以前的文章
  • php网站开发实例教程书wordpress博客页面显示文章在哪
  • 地方o2o同城网站源码微信app开发价格表
  • 花木公司网站源码双语外贸网站源码
  • 什么公司做网站会提供源代码创业做招商加盟类网站赚钱
  • 东莞网站建设排名基因数据库网站开发价格
  • 天河区营销型网站建设科技自立自强
  • 网站域名账号江苏百度推广代理商
  • 专题网站建站对网站分析
  • 外贸出口网站建设如何搭建自己的网站服务器
  • 云南省建设厅网站职称评审房地产推广方案和推广思路