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

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

新人求教~~谢谢!

大家讲道理
大家讲道理

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

membalas semua(2)
左手右手慢动作

Perangkak Awan Shenjianshou disyorkan (http://www.shenjianshou.cn) ditulis sepenuhnya dan dilaksanakan pada awan Tidak perlu mengkonfigurasi sebarang persekitaran pembangunan dan pembangunan serta pelaksanaan yang pantas adalah mungkin.

Dengan hanya beberapa baris javascript, anda boleh melaksanakan perangkak yang kompleks dan menyediakan banyak fungsi berfungsi: anti-anti-crawler, rendering js, penerbitan data, analisis carta, anti-leeching, dll. Ini adalah masalah yang sering dihadapi dalam proses membangunkan perangkak. The Archer akan membantu anda menyelesaikan semuanya.

大家讲道理

Fungsi find juga mengembalikan dokumen HTML dan boleh disambungkan ke fungsi find dan find_all
Selepas nilai tatasusunan diperoleh, ia boleh dianggap secara langsung sebagai elemen nilai, contohnya:

a = ['ab',1,[1,2]]
a[0].upper() # 'AB'
a[2].append(1) # a == ['ab',1,[1,2,1]]
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan