第一次作業 結合三次小作業

2022-08-01 12:15:13 字數 3717 閱讀 1407

用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...