這裡爬取的都是靜態的資料,也沒有設計到跨頁爬取,也沒有用到正規表示式,這就是乙個簡單的爬取
爬取最好大學網的排名
# coding=gbk
import requests
from bs4 import beautifulsoup
import bs4
defgethtmltext
(url)
:try
: r = requests.get(url)
r.raise_for_status(
) return r.text
except
:return
""def
filllist
(ulist,html)
: soup=beautifulsoup(html,
'html.parser'
)for tr in soup.find(
'tbody'
).children:
ifisinstance
(tr,bs4.element.tag)
: tds=tr(
'td'
)[tds[0]
.string,tds[1]
.string,tds[3]
.string]
)def
printlist
(ulist,num)
:print
("\t\t"
.format
("排名"
,"學校"
,"總分"))
for i in
range
(num)
: u=ulist[i]
print
("\t\t"
.format
(u[0
], u[1]
, u[2]
))#print("\t\t".format(u[0],u[1],u[3]))# 按照順序跑
defmain()
: info=
url=
""html=gethtmltext(url)
filllist(info,html)
printlist(info,20)
main(
)
看看原始碼觀察如何提取
這裡的排版有些問題,又興趣的可以改一改,嘿嘿
電影的排名與評分
# coding=gbk
import requests
from bs4 import beautifulsoup
import bs4
defgethtmltext
(url)
:try
: r = requests.get(url)
r.raise_for_status(
) return r.text
except
:return
""def
fillprintlist
(html)
: soup=beautifulsoup(html,
'html.parser'
)for dd in soup.find(
'dl'
, class_=
).children:
#對dl標籤的內容做乙個迴圈遍歷
ifisinstance
(dd,bs4.element.tag)
:#判斷選取迴圈出來的dd標籤中的內容
top=dd.find(
'i',class_=
'integer'
).string
#最重要的還是要用到的標籤的選擇
top1 = dd.find(
'i', class_=
'fraction'
).string
time=dd.find(
'p',class_=
'releasetime'
).string
dds=dd.find(
'a')
.get(
'title'
) num=dd.find(
'i',class_=
'board-index'
).string
print
("排名"
,num,
'\n'
,"電影"
,dds,
'\n'
,"評分"
首先先看看html的架構,然後根據html的標籤節點來選取要爬取的內容
python爬取大學排名
返回載入出來的資料 def gethtmltext url return 解析列表 def fillunivlist ulist,html pass 列印資料 def printunivlist ulist,num pass 進行呼叫函式,返回結果 def main unifo url 載入html...
大學排名資訊爬取
import requests from bs4 import beautifulsoup import bs4 defgethtmltext url try r requests.get url r.raise for status return r.text except return def ...
python爬取最好大學排名
coding gbk import requests from bs4 import beautifulsoup import bs4 def gethtmltext url 將url資訊爬取,並將html頁面返回給其他程式 try r requests.get url,timeout 30 30m...