欢迎来到本网站,本文将为大家详细讲解使用Python的urllib2库获取网络资源的过程。使用urllib2库可以轻松地与网络进行交互,获取网页数据,进行Post请求等操作。
urllib2库的常见用法
GET请求
获取一个远程网页数据是最常见也是最基础的使用方式。使用Python的urllib2库可以轻松地实现。
import urllib2
url = "http://www.example.com"
response = urllib2.urlopen(url)
html_content = response.read()
print(html_content)
以上代码可以获取网址为http://www.example.com的网页内容,使用response.read()
方法可以获取网页内容。如果需要获取网页的元信息,则使用response.info()
方法。
POST请求
POST请求用于发送数据到远程服务器,如表单数据等。使用Python的urllib2库可以轻松地实现。
import urllib2
import urllib
data = urllib.urlencode({"key1": "value1", "key2": "value2", "key3": "value3"})
url = "http://www.example.com"
request = urllib2.Request(url, data=data)
response = urllib2.urlopen(request)
html_content = response.read()
print(html_content)
以上代码可以将数据{"key1": "value1", "key2": "value2", "key3": "value3"}
以POST方式发送到远程服务器,并且返回相应的页面内容。
示例
示例1:爬取豆瓣电影排行榜
我们可以使用Python的urllib2库爬取豆瓣电影排行榜。
import urllib2
import re
def get_Douban_Top250(num):
url = "https://movie.douban.com/top250?start="+str(num)
response = urllib2.urlopen(url)
html_content = response.read()
pattern = re.compile('<div class="item">.*?<span class="title">(.*?)</span>.*?<span class="rating_num".*?average">(.*?)</span>', re.S)
items = re.findall(pattern, html_content)
return items
if __name__ == '__main__':
movie_list = []
for i in range(10):
movie_list.extend(get_Douban_Top250(i*25))
for movie in movie_list:
print("电影名称: %s,评分:%s" % (movie[0], movie[1]))
同样的代码也可以使用BeautifulSoup库来美化HTML文档,获取更加的具体数据。
示例2:爬取天气信息
使用Python的urllib2库可以轻松地获取实时的天气信息,让我们体验一下。
import urllib2
import re
def get_weather_data(city):
url = "http://www.weather.com.cn/weather/101"+city+".shtml"
response = urllib2.urlopen(url)
html_content = response.read()
pattern = re.compile('<ul class="t clearfix".*?<li><p>(.*?)</p></li>.*?<li class="now"><h1>(.*?)</h1>.*?' +
'<p><span>(.*?)</span>.*?<p class="win"><em>(.*?)</em>.*?</ul>', re.S)
items = re.findall(pattern, html_content)
return items[0]
if __name__ == '__main__':
city_dict = {"beijing": "010", "shanghai": "021"}
for city in city_dict:
print("城市: %s" % city)
print("天气: %s" % get_weather_data(city_dict[city])[0])
print("温度: %s" % get_weather_data(city_dict[city])[1])
print("风向: %s" % get_weather_data(city_dict[city])[2])
print("风力: %s" % get_weather_data(city_dict[city])[3])
以上代码可以获取输入的城市的实时天气信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用urllib2获取网络资源实例讲解 - Python技术站