我需要使用python urlib下载整个网站 喜欢
import urllib
site = urllib.urlopen('http://www.mathrubumi.com/index.php')
site_data = site.read()
仅下载第一页。那是index.php。如何使代码下载整个网站。
通过循环?
或者还有其他方法吗?
例如,在wget
代码中不需要循环
wget \ --recursive \--no-clobber \ --page-requisites \ --html-extension \ --convert-links \
--restrict-file-names=windows \ --domains website.org \ --no-parent \ www.website.org/tutorials/html/
答案 0 :(得分:5)
如果您想下载一个包含urllib
的完整网站,您将需要解析每个页面,找到所有链接并下载它们。这是可行的,但要做到正确可能会很棘手。
如果你想要一个纯python解决方案,或者只是从你的脚本中调用wget
,我建议你查看scrapy。
答案 1 :(得分:1)
由于用户(在另一个问题中,但由于..原因而被删除..)指出了使用BeautifulSoup作为替代方案的引用,这里有一个工作示例来检索所有<a href="something.html">something</a>
链接并将其保存在本地:
import urllib2
from BeautifulSoup import BeautifulSoup, SoupStrainer
from os.path import basename
def store_links(page):
with open(basename(page), 'wb') as fh:
site = urllib.urlopen(page)
site_data = site.read()
fh.write(site_data)
for link in BeautifulSoup(site_data, parseOnlyThese=SoupStrainer('a')):
if link.has_attr('href'):
store_links(link['href'])
store_links('http://www.nytimes.com')
注意:已经过测试,目前处于锁定的机器上,因此可能会出现语法错误,但想法是一样的:
答案 2 :(得分:0)