码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫基本原理及入门

时间:2017-11-21 23:41:28      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:ant   ip地址   blog   apple   baidu   加载   url   密码   更改   

爬虫:请求目标网站并获得数据的程序

爬虫的基本步骤:

技术分享图片

使用python自带的urllib库请求百度:

import urllib.request

response = urllib.request.urlopen(http://www.baidu.com)
print(type(response))

#打印结果
<class http.client.HTTPResponse>

可以从类型上看出来,response是一个HTTP响应

 

 

请求:

技术分享图片

请求的方式以GET和POST最为常用,一般的GET方法将请求参数放在URL中。如在百度中搜索一个关键词,这就形成了以GET在URL中更改参数的方法。

而POST将参数放在表单内进行请求。如请求登陆百度,需要向百度服务器发送你的账号密码这些东西。

 

请求头是一个很重要的请求内容,在一般的浏览器请求中,网站会返回一个你的浏览器信息,如果在代码不伪装程浏览器的情况下,你的IP地址会迅速的被网站封掉,每个爬虫库的伪装方式都是不同的,如urllib库

import urllib.request

heads = {}
    heads[User-Agent] = Mozilla/5.0                            (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50                            (KHTML, like Gecko) Version/5.1 Safari/534.50


req = urllib.request.Request(url=url, data=data, method=POST, headers=heads)

response = urllib.request.urlopen(req)
print(response.getheaders()) #getheaders()方法将会返回给你一些请求信息,如时间,服务器信息等,包含user-agent

 

 响应:

技术分享图片

响应就是请求之后浏览器所呈现的东西,最重要的就是响应体,包含了网页的源文件

在代码的情况下查看响应状态:

import urllib.request

response = urllib.requset.urlopen(http://www.baidu.com)

print(response.getcode())

#返回200表示成功

 

解析方式:

当想要获得网页中某些元素应该怎样去解析?

技术分享图片

解析的方式多种多样,目前还只是使用正则来做解析,听说xpath是最简单解析方式,不过我觉得每个库还是要使用一下试试的,看看哪个更适合你。

为什么有的网页请求源码和在浏览器中查看到的不一样?

这是因为动态网站使用了JS渲染,元素都是经过js动态加载出来的,所以想要获得源码还要去模拟浏览器的行为,像selenium驱动browser,PhantomJS等工具。

 

python爬虫基本原理及入门

标签:ant   ip地址   blog   apple   baidu   加载   url   密码   更改   

原文地址:http://www.cnblogs.com/mzc1997/p/7799090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!