java爬虫抓取网页数据(爬虫入门程序urllib2实现下载网页的三种方式:入门 )
优采云 发布时间: 2022-04-04 02:10java爬虫抓取网页数据(爬虫入门程序urllib2实现下载网页的三种方式:入门
)
爬虫入口程序
urllib2实现了三种下载网页的方式:
第一个:
import cookielib
import urllib2
url = "http://www.baidu.com"
response1 = urllib2.urlopen(url)
print "第一种方法"
#获取状态码,200表示成功
print response1.getcode()
#获取网页内容的长度
print len(response1.read())
第二:
request = urllib2.Request(url)
#模拟Mozilla浏览器进行爬虫
request.add_header("user-agent","Mozilla/5.0")
response2 = urllib2.urlopen(request)
print response2.getcode()
print len(response2.read())
第三:
cookie = cookielib.CookieJar()
#加入urllib2处理cookie的能力
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
response3 = urllib2.urlopen(url)
print response3.getcode()
print len(response3.read())
print cookie
爬虫添加数据、标头,然后发布请求
import urllib
import urllib2
url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()
爬虫添加 cookie
为什么要添加 cookie?
Cookie,是指存储在用户本地终端上的一些网站数据(通常是加密的),用于识别用户身份和进行会话跟踪。比如有些网站需要登录才能访问某个页面,在登录之前,你想抓取一个页面内容是不允许的。然后我们就可以使用Urllib2库来保存我们登录的cookies,然后爬取其他页面来达到目的
获取 cookie 并将其保存到变量中
首先我们用CookieJar对象来实现获取cookies的功能,存储在变量中,先体验一下
import urllib2
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也可以传入request
response = opener.open('http://www.baidu.com')
for item in cookie:
print 'Name = '+item.name
print 'Value = '+item.value
我们用上面的方法将cookie保存到一个变量中,然后打印出cookie中的值,结果如下
Name = BAIDUID
Value = B07B663B645729F11F659C02AAE65B4C:FG=1
Name = BAIDUPSID
Value = B07B663B645729F11F659C02AAE65B4C
Name = H_PS_PSSID
Value = 12527_11076_1438_10633
Name = BDSVRTM
Value = 0
Name = BD_HOME
Value = 0
将 cookie 保存到文件
在上述方法中,我们将cookie保存到cookie变量中。如果我们想将 cookie 保存到文件中怎么办?这时候,我们将使用 FileCookieJar 对象,这里我们使用它的子类 MozillaCookieJar 来保存 cookie
mport cookielib
import urllib2
#设置保存cookie的文件,同级目录下的cookie.txt
filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#创建一个请求,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
#保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)
正则表达式的正则表达式语法规则