作業1:
題目:要求用urllib和re庫方法定向爬取給定**2020中國最好學科排名的資料。輸出資訊如下:
2020排名
全部層次
學校型別總分1
前2%中國人民大學
1069.0
2...
...
...解題:
url=""1.2根據網頁結點資訊構造正規表示式headers=
req=urllib.request.request(url,headers=headers)
data=urllib.request.urlopen(req)# 傳送請求
soup=data.read().decode('utf-8')# 解析網頁
1.3輸出**
tplt = "\t<10}\t\t"1.4輸出結果print(tplt.format("2020排名", "全部層次", "學校名稱", "總分", chr(12288)))
for i in range(len(rank)):
print(tplt.format(rank[i],level[i],school[i],score[i],chr(12288)))
#中英文混排時採用chr(12288)
作業2:
要求:用requests和beautiful soup庫方法設計爬取
aqi實時報。
輸出資訊:
序號城市
aqipm2.5
....
....1北京
......
解題獲取http
使用requests進行get請求:
url = ""同上,新增乙個快取。response = requests.get(url)
html = response.text
# 使用快取,防止被ban
# with open('./.cache/aqiweb2.html', 'r', encoding='utf-8') as f:
# html = f.read()
構建soup,解析**
這裡需要先解析下圖中選中部分的**:
使用beatiful soup進行解析:
# 構建soup物件提取資料soup = beautifulsoup(html, "lxml")
# 解析**
table = soup.find('div', attrs=).table.tbody
檢視該**,發現該tbody內,tr均勻排列,且各個tr內的td內容即為需要的資料(即td.text):
因此,只需要進行兩層遍歷,就能提取出所有資訊:
i = 02、執行結果for tr in table.find_all('tr'):
print("".format(i), end='\t')
for td in tr.find_all('td'):
print("".format(strq2b(clear_data(td.text))), end='\t')
print()
i += 1
作業3要求:使用urllib和requests爬取(
解題獲取html
由於該題要求使用urllib.request和requests進行爬取,索性將兩種方法結合快取(即讀取本地檔案)整合成乙個函式,由使用者選擇請求方法。
構建乙個get_html函式,輸入url以及請求方法,返回html文字:
def get_html(url: str, request_type: str) -> str:解析使用正則匹配的方式,將所有的"""獲取html
:param url: 訪問位址
:param request_type: 請求方式: urllib.request 或 urllib.request 或相應快取
:return: html
"""if request_type == "urllib.request":
# urllib.request
return urllib.request.urlopen(url).read().decode("utf-8")
elif request_type == "requests":
# requests
response = requests.get(url)
return response.text
else:
# 讀取快取檔案
with open(f'./.cache/.html', 'r', encoding='utf-8') as f:
return f.read()
標籤內的src提取出來:
imglist = re.findall(r'儲存使用字串分割從url中提取出檔案的名稱(保證字尾名無誤):resp = requests.get(img_url)
with open(f'./download/', 'wb') as f:
f.write(resp.content)
img.split("/")[-1]最後使用f.write(resp.content)即可實現儲存。或以"."進行分割,僅提取字尾名,自己對檔案進行標號命名。
def get_imgs(html:str, download=true) -> none:""":param html: 輸入html
:return: none
"""imglist = re.findall(r'執行結果
資料採集第一次作業
如下 import requests from bs4 import beautifulsoup import bs4 import urllib from bs4 import unicodedammit url try headers req urllib.request.request url...
資料採集技術第一次作業
作業要求 用requests和beautifulsoup庫方法定向爬取給定 的資料,螢幕列印爬取的大學排名資訊。import requests from bs4 import beautifulsoup url headers r requests.get url url,headers heade...
2022寒假第一次作業彙總
這個作業屬於哪個課程 2022物件導向程式設計 這個作業要求在 2022面向程式物件設計寒假作業1 這個作業的目標 1 學習markdown語法 2 自我介紹 3 安裝並學學習git的基本使用 4 註冊github賬號,並建立倉庫,編輯自我介紹,並提交commit 5 選擇並配置乙個適合自己的ide...