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

USHERKEYS 2016-09-02 04:21:10
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?

问题二:newArticle = links[random.randint(0, len(links)-1)].attrs["href"]
此段代码 links[].attrs[] 为什么可以这样写?原理?

新手求教~~!
...全文
392 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
USHERKEYS 2016-09-19
  • 打赏
  • 举报
回复
嗯,谢谢解答~试了几遍,这个大概知道怎么去运用了.刚开始看觉得陌生,用多几次就不生了....
维秀斯丢丢 2016-09-05
  • 打赏
  • 举报
回复
引用 2 楼 twotuli_software 的回复:
问题1: 典型的链式编程, find函数返回的是 这个div节点,那么这个div节点和bsObj的类型 是兼容的。也是可以调用findAll的。 问题2:Links很显然是一个集合,那么links[]返回的肯定是集合中的某个对象,这个对象是什么类型呢?很显然 这个类型有attrs函数,它返href节点。
哥们,我建议你的话 要对这种基础代码认知,从函数开始,返回值等。 一段代码 如果产生了对象,我们是可以直接在后面进行对象的属性和函数访问的。 这种见多了就自然 不是什么问题,就像并非生下来就会说话,听多了,自然就会了,但你不必知道为什么会产生语言。
维秀斯丢丢 2016-09-05
  • 打赏
  • 举报
回复
问题1: 典型的链式编程, find函数返回的是 这个div节点,那么这个div节点和bsObj的类型 是兼容的。也是可以调用findAll的。 问题2:Links很显然是一个集合,那么links[]返回的肯定是集合中的某个对象,这个对象是什么类型呢?很显然 这个类型有attrs函数,它返href节点。
李察德-泰森 2016-09-02
  • 打赏
  • 举报
回复
问题一: return bsObj.find("div", {"id":"bodyContent"}).findAll("a", href=re.compile("^(/wiki/)((?!:).)*$")) 这段代码 find函数里面为什么可以加findAll? bsObj.find("div", {"id":"bodyContent"}) 这个出来的结果好象是个字符串吧,然后再使用正则匹配 问题二:newArticle = links[random.randint(0, len(links)-1)].attrs["href"] 此段代码 links[].attrs[] 为什么可以这样写?原理? links[random.randint(0, len(links)-1)] 这个是个对象吧

37,737

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧