Python基础入门教程之爬虫工作流程及常用的urllib模块

根据使用场景,网络爬虫可分为通用爬虫(传统爬虫)和聚焦爬虫两种

通用网络爬虫捜索引擎抓取系统(BaiduGoogleYahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。但是大多数情况下,网页里面90%的内容对用户来说是无用的。

聚焦爬虫需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。

而我们现在要学的就是聚焦爬虫。

http请求:

浏览器的一个urlhttp服务器发送请求,分为:getpost两种。

浏览器发送一个request请求去获取URLhtml文件,服务器把response文件对象发送回给浏览器。

浏览器解析response中的HTML,其中的img文件,css文件,js文件,浏览器会自动再次发送request请求获取图片,css文件或js文件。

当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。


HTTP请求主要分为GetPost两种方法

GET是从服务器上获取数据,POST是向服务器传送数据

GET请求参数显示,都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数

来产生响应内容,即get”请求的参数是url的一部分。例如:http://www.baidu.com/s?wd=Chinese

向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改,一般主要是表单提交,请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码,

 注意:避免使用Get方式提交表单,因为有可能会导致安全问题。 比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。

Python爬虫工作的流程图:


urllib2库的基本使用

所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页,我们先学习urllib2urllib2 python3.x 被改为urllib.request

python2中,urllib2的库基本使用:

# 导入urllib2

import urllib2

# 向指定的url发送请求,并返回服务器响应的类文件对象

response = urllib2.urlopen("http://www.baidu.com")

#read()方法读取文件全部内容,返回字符串

html = response.read()

# 打印字符串

printhtml

python3中,urllib库的使用

#导入urllib

import urllib.request

# 向指定的url发送请求,并返回服务器响应的类文件对象

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

#read()方法读取文件全部内容,返回字符串

html=response.read()    

print(html)

如何模拟浏览器进行访问:

最好通过抓包工具,或者浏览器的调试工具,找到Headers


#导入模块

import urllib.request

import urllib.parse

#url,模拟浏览器

url='http://www.baidu.com'

hearder={

   'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

#发送请求

request=urllib.request.Request(url,headers=header)

response=urllib.request.urlopen(request).read()

#写入文件

f=open("./1.html","wb")

f.write(reponse)

f.close()


猜你喜欢

转载自blog.csdn.net/programmer_feng/article/details/80227852