下面为您详细讲解“零基础写python爬虫之urllib2使用指南”的完整攻略。
urllib2是什么?
urllib2
是Python中处理URL的扩展库,可以用来向一个url地址发送请求并返回响应的结果,它可以模拟浏览器的访问,支持发送请求、处理响应、设置http头、获取cookies等操作,是Python网络编程的重要组成部分。
urllib2的安装
urllib2
是Python内置的网络库,不需要额外安装就可以直接使用,只需要在Python脚本中导入即可。
import urllib2
urllib2的基本使用
发送请求
使用urllib2
发送请求需要使用urlopen()
函数,该函数接受一个URL作为参数,可以向该URL发送一个GET请求并获取响应的结果,例如:
import urllib2
response = urllib2.urlopen('http://www.baidu.com')
print response.read()
这个例子使用urllib2.urlopen()
方法请求了百度首页,并打印出了响应的内容。response
对象是一个类文件对象,它支持文件对象的操作方法,包括read()
、readline()
、readlines()
等。
异常处理
在使用urllib2.urlopen()
方法时,可能会出现各种类型的异常,例如网络不通、服务器出错、请求超时等,我们需要对这些异常进行处理,避免程序崩溃。通常的做法是使用try-except语句对异常进行捕捉。例如:
import urllib2
try:
response = urllib2.urlopen('http://www.baidu.com')
except urllib2.HTTPError, e:
print 'HTTPError'
except urllib2.URLError, e:
print 'URLError'
else:
print response.read()
在这个例子中,我们使用了try-except语句对请求过程中可能出现的HTTPError
和URLError
异常进行捕捉,具体的异常信息可以在异常对象中获取。
发送请求的设置
在使用urlopen()
方法发送请求时,可以对请求进行自定义设置。例如,可以设置请求的超时时间、请求头等。这里举一个设置用户代理的例子:
import urllib2
url = 'http://www.baidu.com'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'
headers = {'User-Agent':user_agent}
request = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(request)
print response.read()
在这个例子中,我们首先定义了url
和一个user_agent
,这个user_agent
是用来模拟浏览器的,可以设置为任意的浏览器。然后我们定义了一个headers
字典,将user_agent
添加到字典中,最后创建了一个Request
对象并将headers
传递给它。最后,使用urlopen()
方法发送请求并读取响应内容。
示例一:爬取每日英语听力网站
下面为您举一个示例,演示如何使用urllib2
爬取每日英语听力网站(http://www.kekenet.com/read/news/)上的文章。
import urllib2
from bs4 import BeautifulSoup
url = 'http://www.kekenet.com/read/news/'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'
headers = {'User-Agent':user_agent}
try:
request = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(request)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
article_list = soup.select('.pList .clearfix li a')
for article in article_list:
title = article.get_text().strip()
link = article['href']
print title, link
except urllib2.URLError, e:
print 'URLError'
except urllib2.HTTPError, e:
print 'HTTPError'
在这个示例中,我们首先定义了要爬取的网站的URL,然后定义了一个user_agent
和headers
。接着,使用urlopen()
方法发送请求,获取响应内容,并使用BS4对html进行解析。在解析完html后,我们定位到文章列表的html标签,然后遍历列表,获取每篇文章的标题和链接。最后,将文章标题和链接打印出来。
示例二:爬取某个博客的文章
下面为您举一个示例,演示如何使用urllib2
爬取某个博客(http://mrjiang.blog.163.com/)上的文章。
import urllib2
from bs4 import BeautifulSoup
url = 'http://mrjiang.blog.163.com/blog/static/45773197201252241622221/'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'
headers = {'User-Agent':user_agent}
try:
request = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(request)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
article_list = soup.select('.pagingBox li a')
for article in article_list:
title = article.get_text().strip()
link = article['href']
print title, link
except urllib2.URLError, e:
print 'URLError'
except urllib2.HTTPError, e:
print 'HTTPError'
在这个示例中,我们使用urllib2
爬取了一个博客(http://mrjiang.blog.163.com/)上的文章。首先定义了博客的URL、user_agent
和headers
。然后,使用urlopen()
方法发送请求,获取响应内容,并使用BS4对html进行解析。在解析完html后,我们定位到博客文章列表的html标签,然后遍历列表,获取每篇文章的标题和链接。最后,将文章标题和链接打印出来。
以上就是“零基础写python爬虫之urllib2使用指南”的完整攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:零基础写python爬虫之urllib2使用指南 - Python技术站