1.本地安装了nginx, 在默认的html目录下建立测试html代码:
代码如图,即index.html导向a,b,c 3个html,a.html又可以导向aa,bb两个html,c.html可以导向cc.html。
2.修改nignx配置使得本地可以访问写的kmtest里的index.html。
参考文档https://www.cnblogs.com/erlou96/p/12091067.html
nginx默认访问html目录下的index,我在html下新创建了kmtest,然后kmtest里创建了测试用的index.html。修改完conf下的nginx.conf完之后,记得重启nginx生效。
3.然后访问本地http://localhost:1024/,发现自己写的html已经生效。
到此,准备工作已经完成,开始编写爬虫脚本。
二.爬虫脚本
1.如图
#!/usr/bin/env python3
#-*-coding=utf-8-*
__author__='km'
import urllib.request
from re import *
def download(url):
result = urllib.request.urlopen(url=url)
#注意这里是result.read(),而非response.read()
content = result.read()
# 解码
htmlStr = content.decode('UTF-8')
#print('1:',htmlStr) 调试
return htmlStr
def analyse(htmlstr):
#获取所有的a节点
aList = findall('<a[^>]*>',htmlstr)
result = []
#print(aList) 调试 输出:
#["<a herf='a.html'>", "<a herf='b.html'>", "<a herf='c.html'>"]
#遍历a节点
for a in aList:
#从a节点中提取herf属性的值,比如a.html
g = search('herf[\s]*=[]\s]*[]\'"]([^>\'""]*)[\'"]',a)
if g != None:
#获取herf的值,即a.html
url = g.group(1)
url = 'http://localhost:1024/'+url
#print('3',url) 调试,输出类似:http://localhost:1024/a.html
result.append(url)
return result
def crawler(url):
print(url)
html = download(url)
urls = analyse(html)
#对每一个url递归调用
for url in urls:
crawler(url)
if __name__=='__main__':
c = crawler('http://localhost:1024')
2.运行结果:
ps:备注下search()和re.search()的区别。