怎么用python扒网页?

环球青藤 2020/09/27 02:39

python爬虫网页的基本流程:

1、HTTP请求实现

使用urllib2/urllib实现:

urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅。

urllib2提供一个基础函数urlopen,通过向指定的URL发出请求来获取数据。最简单的形式是:

import urllib2
response=urllib2.urlopen('http://www.zhihu.com')
html=response.read()
print html

其实可以将上面对http://www.zhihu.com的请求响应分为两步,一步是请求,一步是响应,形式如下:

import urllib2 
# 请求 
request=urllib2.Request('http://www.zhihu.com') 
# 响应 
response = urllib2.urlopen(request) 
html=response.read() 
print html 

还有post请求实现:

import urllib 
import urllib2 
url = 'http://www.xxxxxx.com/login' 
postdata = {'username' : 'qiye', 
    'password' : 'qiye_pass'} 
# info 需要被编码为urllib2能理解的格式,这里用到的是urllib 
data = urllib.urlencode(postdata) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
html = response.read() 

2、请求头headers处理
将上面的例子改写一下,加上请求头信息,设置一下请求头中的User-Agent域和Referer域信息。

import urllib 
import urllib2 
url = 'http://www.xxxxxx.com/login' 
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' 
referer='http://www.xxxxxx.com/' 
postdata = {'username' : 'qiye', 
    'password' : 'qiye_pass'} 
# 将user_agent,referer写入头信息 
headers={'User-Agent':user_agent,'Referer':referer} 
data = urllib.urlencode(postdata) 
req = urllib2.Request(url, data,headers) 
response = urllib2.urlopen(req) 
html = response.read() 

3、Cookie处理

urllib2对Cookie的处理也是自动的,使用CookieJar函数进行Cookie的管理。如果需要得到某个Cookie项的值,可以这么做:

import urllib2 
import cookielib 
cookie = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) 
response = opener.open('http://www.zhihu.com') 
for item in cookie: 
    print item.name+':'+item.value 

但是有时候会遇到这种情况,我们不想让urllib2自动处理,我们想自己添加Cookie的内容,可以通过设置请求头中的Cookie域来做:

import  urllib2 
opener = urllib2.build_opener() 
opener.addheaders.append( ( 'Cookie', 'email=' + "xxxxxxx@163.com" ) ) 
req = urllib2.Request( "http://www.zhihu.com/" ) 
response = opener.open(req) 
print response.headers 
retdata = response.read() 

 

免费直播

    精选课程 更多

    注册电脑版

    版权所有 2003-2020 广州环球青藤科技发展有限公司