python - 网络数据采集的例子,有关find函数等等的疑问
大家讲道理
大家讲道理 2017-04-18 09:53:50
0
2
467

来自 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("p", {"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("p", {"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[] 之类的写法是如何依据的?可以这样写的原理?

新人求教~~谢谢!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(2)
左手右手慢动作

Il est recommandé d'utiliser le Shenjianshou Cloud Crawler (http://www.shenjianshou.cn). Le robot est entièrement écrit et exécuté sur le cloud. Il n'est pas nécessaire de configurer un environnement de développement, et un développement et une mise en œuvre rapides. sont possibles.

Avec seulement quelques lignes de javascript, vous pouvez implémenter des robots complexes et fournir de nombreuses fonctions fonctionnelles : anti-anti-crawlers, rendu js, publication de données, analyse de graphiques, anti-sangsue, etc. Ce sont des problèmes souvent rencontrés en train de développer des robots d'exploration. L'Archer vous aidera à tout résoudre.

大家讲道理

La fonction find renvoie également un document HTML et peut être connectée aux fonctions find et find_all
Une fois la valeur du tableau obtenue, elle peut être traitée directement comme un élément de la valeur, par exemple :

a = ['ab',1,[1,2]]
a[0].upper() # 'AB'
a[2].append(1) # a == ['ab',1,[1,2,1]]
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal