用python批量下载网站内容

时间:2024-03-29 11:49:06

逛到一个网站http://www.meiguoliyu.com/发现里边的内容挺不错的,但是一页就那么一点内容,总共几百页,一页一页点过去浏览也太累了

用PYTHON写了个程序把这几百页的内容都整合到一个文件里去,只用了十几行代码,python果然够简洁的。

import urllib,urllib2,re url = "http://www.meiguoliyu.com/html/meiguoliyu/2009/0307/liyudingyi.html" f=open('HTTP_LIYU_DOWN.html','w+')
导入库urllib,urllib2作为基本的HTTP连接的库,re库为正则表达式库,整合数据时需要。

http://www.meiguoliyu.com/html/meiguoliyu/2009/0307/liyudingyi.html为该网站内容的第一页的地址。

将所有内容存在本地HTTP_LIYU_DOWN.html文件里

以下就开始WHILE循环啦

while True: print "getting url:",url content = urllib.urlopen(url).read() title = re.findall(r'<title>.*</title>',content) title = re.sub('<title>|_美国俚语网</title>','',title[0]) print title text = re.findall(r'<div class="content.*</div><!-- /content -->', content,re.DOTALL)[0] hrep = re.findall(r'<li>下一篇:<a href.*</li>',content)[0] url = re.findall(r'http://.*html',hrep)[0] f.write(title) f.write(text) f.write('<br><br><br><br>') f.close()下面是具体的解释:

直接urllib.urlopen(url).read()调用就可以读取该地址网页内容,并存在content里

然后就是在数据里搜寻目标数据了

看网页代码寻找规律,

标题部分<title>什么是俚语?俚语的定义是什么?_美国俚语网</title>
正文部分

<div class="content"> <table width='100%'> <tr><td><div style="float: left"><script src='/plus/ad_js.php?aid=3' language='javascript'></script></div><p>俚语(Slang),是指民间非正式、较口语的语句,是百姓在日常生活中总结出来的通俗易懂顺口的具有地方色彩的词语。地域性强,较生活化。俚语是一种非正式的语言,通常用在非正式的场合。有时俚语用以表达新鲜事物,或对旧事物赋以新的说法。</p> <p>世界各地都存在俚语,中文里也有很多俚语如:哇塞、不靠谱、纯爷们儿、囧、雷等等。英文中也如此,例如见面问好的What’s up。</p> <p>本站主要介绍的是英文的俚语,主要包含美国俚语、英国俚语、加拿大俚语、澳大利亚俚语、新西兰俚语等等。</p></td></tr> </table> </div><!-- /content -->

可以发现

标题位于<title></title>之间,

而正文位于 <div class="content"> </div><!--/content --> 之间,

下一页的连接地址位于 <li>下一篇:<a href.</li>之间,且以http://.开头,以html结尾。

用正则表达式搜寻这两个特征:

标题为'<title>.*</title>'

正文为'<div class="content.*</div><!-- /content -->'

链接地址为'<li>下一篇:<a href.*</li>'

更新链接地址到URL后,就可以开始循环直到末页为止了

运行效果为

-----------------------------------------------------------------------------------------------------------------------------------------------------

用python批量下载网站内容



-----------------------------------------------------------------------------------------------------------------------------------------------------


可见所有正文部分都被集合在了一起,方便了许多