http请求

输入网址进行访问的时候,要做的第一件事就是输入网页链接(url):

* url:uniform resource locator:统一资源定位器(协议://域名:端口/路由?参数)

而数据传输使用的协议,一般就是http协议:

* http:hyper text transfer protocol:超文本传输协议

 

url基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]

  • scheme:协议(例如:http, https, ftp)
  • host:服务器的IP地址或者域名
  • port#:服务器的端口(如果是走协议默认端口,缺省端口80)
  • path:访问资源的路径
  • query-string:参数,发送给http服务器的数据
  • anchor:锚(跳转到网页的指定锚点位置)

 

http中最常见的两类请求:

* get:请求参数可直接写在url中

例如:http://kaoshi.edu.sina.com.cn/?p=college&s=api2015&a=getAllCollege就是一个get请求,前半部分(问号前)链接说明了我们要访问的服务是新浪提供的考试信息,后半部分的参数指明了我们需要进行的操作是获取大学的信息数据。这里的p,s,a都是该网站定义好的参数,通过给这些参数赋值,即可得到对应的数据。

* post:参数提供在数据包的主体中,在url中不可见

一个请求数据包由头部(header)和主体(body)两部分组成,所请求的url即记录在头部中;参数不是直接写在url中,而是提供在数据包的body中,非显式可见,故更安全。

 

url的两种返回类型:

* html:hyper text markup language标记语言,经浏览器渲染后呈现,是返回给用户看的,是文本形式的html代码。为了对其进行解析(文本->结构化html对象),需要借助一些工具如BeautifulSoup。

* api:application programming interface应用编程接口,是给开发者看的,是文本形式的json字符串(JavaScript object notation)。用python中的json包可直接将json字符串加载为python中的字典。

 

打开网页的开发者工具(右键-审查元素),在Network标签页中可以查看当前网页正在请求的资源(右键刷新网页)。Network标签页中请求的资源文件主要包括以下几类:

* All:不加筛选条件,即请求的全部资源文件

* XHR:xmlHttpRequest,可以同步或异步地返回 Web 服务器的响应。xmlHttpRequest在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新

* JS:JavaScript代码

* CSS:Cascade Style Sheets:样式文件

* Img:jpg,png等图片文件

* Media:媒体资源文件

* Font:字体文件

* Doc:静态HTML文档(hyper text markup language)

在用爬虫抓取数据的时候,主要关注XHR,JS和Doc等资源。 

 

爬虫常用工具:

python 2中可用来做爬虫的库有很多,比较常用的是urllib、urllib2和requests,这三个库基本可以解决大部分抓取需求(实际上只用前两个基本就够了)。在python3中,前两者合并到了一起成了urllib.request。三者间的关系为:

* urllib和urllib2是python标准库,是python自带的可直接使用

* urllib2是完善拓展了urllib的一些功能,比如可构造请求对象进行User-Agent伪装;但它又缺乏一些urllib的基本功能,因而这两者必须同时使用

* 在python 3之后,urllib2这个模块已经被合并到urllib中,整个urllib模块被分为urllib.request,urllib.parse,urllib.error. urllib.request打开和浏览url中的内容;urllib.error包含从urllib.request发生的错误或异常;urllib.parse解析url。

* requests是第三方库,不是python基金会实现的,但是功能是很强大的

评述:国内用urllib的比较多,国外用第三方库requests的比较多。相较而言,在python3中,requests的用法要比urllib.request简单得多,所以收到很多人推荐。

 

Web开发三件套:HTML,CSS,JS

常用标签汇总:(更详细汇总可直接查看:http://www.w3school.com.cn/tags/

* 单标签

<base href=" " target=" "/>:为页面上的所有链接设定一个基准地址或基准目标,只可出现在head内部

<link rel=" "/>:链接一个外部样式表,只可出现在head内部

<meta >(meta):元信息标签,提供有关页面的元信息,比如针对搜索引擎和更新频率的描述,只可出现在head内部
* 内联标签

<br/>:(blank row或break)换行标签,仅仅是换行,不会生成空白行

<a href=" " title=" " target=" "> - </a>:(anchor)超链接标签,定义超链接,href属性指定了链接的目标

<span> - </span>:(span)用于对行内元素进行组合以便通过样式对其格式化,例如在一行字内某几个字想采用别的颜色

* 块级标签

<h1 > - </h1>:(head)标题标签,一页只能有一个h1,最小为h6

<p >...</p>:(paragraph)段落标签,上下自动生成空白行

<div >:(division)分块标签,其包含的内容被设定为一个独立的块,上下自动生成空白行

   div中可包含其他html标签或文本内容

</div>

<ul type="disc">  :(unordered list)无序列表。type可取三个值,这里disc为实心小圆点(默认样式)

   <li></li>

   <li></li>

   <li></li>

</ul>

标签的属性:

* id

* class

* name

* style

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值