今天看一个爬虫代码的时候遇到如下代码:
links = getLinks("/wiki/Python_(programming_language)")
print(links)
while(len(links) > 0):
for link in links:
print("-------------------")
historyIPs = getHistoryIPs(link.attrs["href"])
for historyIP in historyIPs:
print(historyIP)
newLink = links[random.randint(0, len(links)-1)].attrs["href"]
links = getLinks(newLink)
像这里的link.attrs
中的attrs我了解到是从得到的链接里面找到相对应的属性。
但像这样的话
>>> import attr
>>> @attr.s
... class C(object):
... x = attr.ib(default=42)
... y = attr.ib(default=attr.Factory(list))
...
... def hard_math(self, z):
... return self.x * self.y * z
>>> i = C(x=1, y=2)
>>> i
C(x=1, y=2)
>>> i.hard_math(3)
6
>>> i == C(1, 2)
True
>>> i != C(2, 1)
True
>>> attr.asdict(i)
{'y': 2, 'x': 1}
>>> C()
C(x=42, y=[])
>>> C2 = attr.make_class("C2", ["a", "b"])
>>> C2("foo", "bar")
C2(a='foo', b='bar')
这里的attrs有代表什么呐?
作为一个初学者会很疑惑这个attrs到底该如何去运用呐,又如何去分辨呐。我好像走进了死胡同。。。
如果没猜错的话,爬虫代码getLinks函数内部调用了BeautifulSoup,link.attr返回的是一个属性字典,是BeautifulSoup中为对象定义的一个方法,比如:
跟你下面的 import attr 没啥关系。