近期的工作学习中使用到了python,分享一些初学者的心得与君共勉。
本节的内容主要是如何使用python去获取网页的源代码并存储到本地文件中,希望通过本节可以让你略微了解到python的神奇。
关于python 2.7的安装请参考廖雪峰老师的博客:
先上代码:
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic%2520Tee&_dcat=15687&Color=Black&_pgn=1'
result=getPage(url)
print result
第1、2行导入了必要的包
第3至6行定义了一个函数,目的是向指定url发送http请求,并将网页的源代码返回
第10行把获得的源码进行展示
在命令行执行代码的话,可以看到类似图1-1的一堆html代码,即为成功。
图1-1
可以用浏览器访问一下代码中的url,可以看到类似图1-2的ebay的网站。(为了逃避中文字符的处理,所以选择了英文的网站)
图1-2
而在浏览的网页的空白处单击右键,选择“查看网页源代码”,可以看到类似图1-3的的html源码,实际上与图1-1中是一样的。
图1-3
修改一下代码,将获取的html源码写入本地的文件。
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic%2520Tee&_dcat=15687&Color=Black&_pgn=1'
result=getPage(url)
txt='D:\\result.html'
f = open(txt,"w+")
f.write(result)
第10至12行进行了文件操作,在D盘创建了result.html文件并将result变量中的内容写入其中。
作为一个购物网站,大部分类型的商品都是分很多页的,接下来继续修改代码,让它能够取出前5页的内容,分别写入5个文件中。
import urllib
import urllib2
def getPage(url):
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic%2520Tee&_dcat=15687&Color=Black'
p=0
while p<5:
print ' =='+str(p+1)+'==start=='
result=getPage(url+'&_pgn='+str(p+1))
txt='D:\\result'+str(p+1)+'.html'
f = open(txt,"w+")
f.write(result)
print ' =='+str(p+1)+'====end=='
p=p+1
f.close()
第8行修改了url字符串的结尾部分,删除了“&_pgn=1”,并将其作为后面循环的参数
第10至17行做了一个0至4的循环(当然你也可以设置成1到5),其中第11行和16行仅是跟踪代码,用以显示当前读到的页数。第12行的实参将循环变量p组合进去,达到获取不同页html源码的作用。
第18行结束文件操作,关闭所用资源。
程序在命令行执行后,最后一行显示“==5====end==”,并在D盘生成如图1-4的,文件大小近似的5个html文件即为成功。
图1-4
本节到此结束,多谢。请关注下一节。