为了账号安全,请及时绑定邮箱和手机立即绑定

网络数据采集的例子,有关find函数等等的疑问

网络数据采集的例子,有关find函数等等的疑问

幕布斯6054654 2019-02-25 21:48:08
来自 Python网络数据采集的例子: from urllib.request import urlopen from bs4 import BeautifulSoup import datetime import random import re random.seed(datetime.datetime.now()) def getLinks(articleUrl): html = urlopen("http://en.wikipedia.org"+articleUrl) bsObj = BeautifulSoup(html) return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) links = getLinks("/wiki/Kevin_Bacon") while len(links) > 0: newArticle = links[random.randint(0, len(links)-1)].attrs["href"] print(newArticle) links = getLinks(newArticle) 问题一: return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) 这段代码里面, find函数后面为什么可以加findAll,即写成 XXX.find().findAall() 的形式? 问题二:newArticle = links[random.randint(0, len(links)-1)].attrs["href"]此段代码 像 links[].attrs[] 之类的写法是如何依据的?可以这样写的原理? 新人求教~~谢谢!
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

find函数返回的也是html文档,可以接find函数和find_all函数;
数组取值后可以直接当作值的元素对待,例如:

a = ['ab',1,[1,2]]
a[0].upper() # 'AB'
a[2].append(1) # a == ['ab',1,[1,2,1]]
查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 534 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信