新手做了一个随机跳转网站的爬虫,但不知道错误在哪

先贴上代码

def getInlinks(bsobj,inURL):                   #寻找网页的内链
    inURL=urlparse(inURL).scheme+"://"+urlparse(inURL).netloc
    inlinks=[]
    for link in bsobj.findALL("a",href=re.compile("^(/|.*"+inURL+")")):    
        #寻找以/开头或者包含当前URL的链接
        if link.attrs["href"] is not None:
            if link.attrs["href"] not in inlinks:
                if(link.attrs["href"].startswith('/')):
                    inlinks.append(inURL+link.attrs["href"])
                else:
                    inlinks.append(link.attrs['href'])
    return inlinks

def getOutlinks(bsobj,outURL):        #寻找网页中的外链
    outlinks=[]
    for link in bsobj.findALL("a",href=re.compile("^(http|www)((?!"+outURL+").)*$")):   #找到http,www开头的并且不包含当前URL的
        if link.attrs['href'] is not None:
            if link.attrs['href'] not in outlinks:
                outlinks.append(link.attrs['href'])
    return outlinks


def getlink(startURL):
    html=urlopen(startURL)
    bsobj=BeautifulSoup(html,"lxml")
    outlinks=getOutlinks(bsobj,urlparse(startURL).netloc)
    if (len(outlinks)==0):
        print("没有可跳转的外部网站")
        domain=urlparse(startURL).scheme+"://"+urlparse(startURL).netloc
        inlinks=getInlinks(bsobj,domain)
        return getlink(inlinks[random.randint(0,len(inlinks)-1)])
    else:
        return outlinks[random.randint(0,len(outlinks)-1)]

def followlinks(startURL):    #只想让它跳转五次,递归调用
    outlinks=getlink(startURL)
    print("将要跳转的网站是"+outlinks)
    global a
    a=a+1
    if(a<=5):
        followlinks(outlinks)
followlinks("http://www.baidu.com/")

报错的原因是:

Traceback (most recent call last):
File "C:/Users/18022863809/Desktop/python_work/爬虫.py", line 55, in
followlinks("http://www.baidu.com/")
File "C:/Users/18022863809/Desktop/python_work/爬虫.py", line 49, in followlinks
outlinks=getlink(startURL)
File "C:/Users/18022863809/Desktop/python_work/爬虫.py", line 39, in getlink
outlinks=getOut(bsobj,urlparse(startURL).netloc)
File "C:/Users/18022863809/Desktop/python_work/爬虫.py", line 26, in getOut
for
```link in bsobj.findALL("a",href=re.compile("^(http|www)((?!"+outURL+").)*$")):
TypeError: 'NoneType' object is not callable

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

2
新手上路,IDEA写的jsp跳转到servlet出现404错误,大佬救救我吧?
2
ssm中jsp里面跳转不了另一个jsp,link嵌套css也没有反应
1
高难度!网站被挂码跳转,换了服务器、换了IP没用,代码里没有挂码文件,跪求大神支招
0
vue上线部署路由首页跳转Loading chunk 2 failed错误,如何解决?
0
Django中 a href链接跳转问题
1
菜单加载子界面是使用load方式好,还是通过a标签跳转的好
1
bootstrapPaginator分页输入末页数不跳转
2
nginx配置https问题,出现了一个很奇怪的现象!所有其余网站(没配置https)的https(会提示证书风险)都跳转到那个配置了https的网站
3
vue怎么实现跳转同一个路由的时候刷新当前路由
0
SSH项目中action跳转的问题
1
nginx同一个端口支持http和https吗,不用强跳转的方法
0
微信小程序一个页面的picker选项保存之后跳转到了另一个页面并显示出来,如何通过一个按钮进入到之前的选择页面并进行修改??谢谢
1
c# mvc 中因为我用session保存了信息,时间一长session过期,需要重新跳转外部某个链接重新获取状态
1
单纯的 ajax提交表单数据servlet直接响应 并跳转页面 读取到表单的数据(登录界面跳转)
2
关于call指令跳转的问题
1
Servlet3.0注释 写入代码后无法找到Servlet报404错误
2
Android跳转闪退的原因
1
Android studio想要从登陆界面跳转到这个界面会闪退,求解决,这个界面的代码有什么问题吗,但是并没有报错
1
我使用iframe实现了点击左边栏 只有右边的内容变化 但在跳转到servlert并转向jsp时,jsp的表格样式无法显示
0
求一段.htaccess代码!域名跳转的!