用requests和beautifulsoup庫爬取上的大學排名
**:
import requests
import bs4
from bs4 import beautifulsoup
#從網路上獲取大學排名網頁的內容
def gethtmltext(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
return r.text
except:
return ""
def fillunivlist(ulist, html):
soup = beautifulsoup(html, "html.parser")
for tr in soup.find('tbody').children:
# 過濾
if isinstance(tr, bs4.element.tag):
tds = tr('td')
tds[4].text.strip()])
#利用資料結構展示輸出結構
def printunivlist(ulist, num):
tplt='\t^10}\t\t\t'
#輸出的結構布置
print(tplt.format('大學綜合排名', '學校名稱', '學校所在地', '學校型別', '總得分' ,chr(12288)))
#chr(12288)是中文空格填充字元
for i in range(num):
u=ulist[i]
print(tplt.format(u[0], u[1], u[2], u[3] , u[4] ,chr(12288)))
def main():
unifo=
url=''
html=gethtmltext(url)
fillunivlist(unifo, html)
printunivlist(unifo, 70)#列出70所學校的資訊,不然福大就進不了這個榜單惹
main()
爬取結果(只能說這個排名對福大並不是很友好):
這次作業算是爬蟲的第一次實踐,初嚐了beautifulsoup的美味。也學會了用f12來檢視網頁源**的一些關鍵資訊進行針對性的爬取。
**:
import re
import requests
def gethtmltext(url): # 從網路獲取網頁內容
try:
headers =
r = requests.get(url, headers=headers)
r.raise_for_status
return r.text
except:
print("爬取失敗")
def parsepage(ilt, html): # 解析
try:
plt = re.findall(r'\"view_price\":\"\d+\.\d*\"', html)
tlt = re.findall(r'\"raw_title\":\".*?\"', html)
for i in range(len(plt)):
price = eval(plt[i].split('\"')[3])
title = tlt[i].split('\"')[3]
except:
print("解析出錯")
def printgoodslist(ilt, num): # 輸出
tplt = "\t^20}\t" # 中間一行用第三元素填充(中文)
print(tplt.format("序號", "**", "商品名稱", chr(12288)))
count = 0
for g in ilt:
count += 1
if count <= num:
print(tplt.format(count, g[0], g[1], chr(12288)))
def main():
goods = '海力士'
depth = 1
start_url = "" + goods
infolist =
num = 200
for i in range(depth):
try:
url = start_url + '$s=' + str(44 * 1)
html = gethtmltext(url)
parsepage(infolist, html)
except:
continue
printgoodslist(infolist, num)
main()
結果:
這一次的實驗和第一次實驗類似,開啟f12獲取搜尋介面網頁的源**的header相關訊息,因為用爬蟲爬**,得到的頁面是登入頁面,需要「假登入」,獲取頭部headers資訊,作為引數傳給requests.get(url,headers = header)。
爬取學校宣傳部(的檔案,並儲存在本地。
**:
import requests
from bs4 import beautifulsoup
import os
import re
url = ""
headers =
html = requests.get(url, headers=headers)
html = html.text
# 獲取當前根目錄
root = os.getcwd()
# 改變當前目錄
# 解析網頁
soup = beautifulsoup(html, "html.parser")
imgtags = soup.find_all("img", attrs=)
print(imgtags)
for imgtag in imgtags:
name = imgtag.get("alt")
src = imgtag.get("src")
#因為程式會儲存src開頭是/attach/要加上url
print(f" 儲存成功")
結果:
第三次實驗還是比較簡單,要爬取的資訊格式相近,主要的還是正規表示式的應用
第一次作業 結合三次小作業
如下 import requests from bs4 import beautifulsoup import bs4 def get text url try r requests.get url r.raise for status 判斷狀態碼是否為200 return r.text excep...
第一次作業 結合三次小作業
1 實驗要求 用requests和beautifulsoup庫方法定向爬取給定 的資料,螢幕列印爬取的大學排名資訊。2 實驗 import requests import bs4 from bs4 import beautifulsoup def gethtmltext url try r requ...
第一次作業 三次小作業
1.用requests和beautifulsoup庫方法定向爬取給定 的資料,螢幕列印爬取的大學排名資訊。列印示例 排名 學校名稱 省市 學校型別 1 清華大學 北京 綜合 from bs4 import beautifulsoup import urllib.request url req url...