第一次作業 三次小作業

2022-07-30 17:48:12 字數 3711 閱讀 1579

1.用requests和beautifulsoup庫方法定向爬取給定**(的資料,螢幕列印爬取的大學排名資訊。 列印示例: 排名 學校名稱 省市 學校型別 1 清華大學 北京 綜合

**

from bs4 import

beautifulsoup

import

urllib.request

url='

'req=urllib.request.urlopen(url)

data=req.read()

#讀取url**的內容

html=data.decode()

#將二進位制資料轉為字串

soup=beautifulsoup(html,"

html.parser")

#建立名稱為soup的beautifulsoup物件,指定html的解析器為』html.parser『

lis=soup.find('

tbody

').children

#獲取'tbody'的子元素結點

print("

排名\t學校名稱\t省市\t學校型別\t總分")

for li in

lis:

r = li.find_all("td"

)

print(r[0].text.strip() + "

\t" + r[1].text.strip() + "

\t" + r[2].text.strip() + "

" + r[3].text.strip() + "

" + r[4].text.strip())

#輸出

結果

心得:了解了網頁爬取的基本步驟,初步掌握了beautiful soup和request庫的用法

**

import

requests

import

redef

gethtmltext(url):

kv = #

cookie

try:

r = requests.get(url, headers=kv, timeout=30)

r.raise_for_status()

return

r.text

except

:

return

""def

parsepage(ilt,html):

try:

plt=re.findall(r'

\"view_price\"\:\"[\d\.]*\"

',html)

slt = re.findall(r'

\"view_sales\"\:\".*?\"

', html) #

識別銷量

tlt=re.findall(r'

\"raw_title\"\:\".*?\"

',html)

for i in

range(len(plt)):

price=eval(plt[i].split('

:')[1])

sales=eval(slt[i].split('

:')[1])

title=eval(tlt[i].split('

:')[1])

except

:

print("")#

獲取商品資訊

defprintgoodlist(ilt):

tplt="

\t\t

"print(tplt.format("

序號","

**","

商品名稱"))

count=0

for g in

ilt:

count=count+1

print(tplt.format(count,g[0],g[1]))#

輸出函式

defmain():

goods="書包"

depth=2start_url="

"+goods

infolist=

for i in range(depth+1):

try:

url=start_url+"

&s="+str(44*i)#

翻頁處理

html=gethtmltext(url)

parsepage(infolist,html)

except

:

continue

printgoodlist(infolist)

main()

結果

心得:由於**不允許爬蟲,所以要將headers改掉,在csdn上查閱後發現要用cookie,開啟**商品頁面,登入**賬號,f12進入瀏覽器的開發者除錯工具,點選network,重新重新整理頁面,選擇最上面的search?initiative_id=......的dos檔案,找到request headers,複製獲得cookie。

3.jpgfiledownload實驗

作業要求:爬取乙個給定網頁(或者自選網頁的所有jpg格式檔案

**

import

reimport

requests

import

urllib.request

import

osr = requests.get("

")path = "

d:/new file/images1/

"html = re.sub("

", ""

, r.text)

i =0

if (not os.path.exists(path)): #

判斷檔案路徑是否存在,不存在就建立

位址篩選

判斷是否src開頭

判斷是否絕對路徑

寫入資料夾

with open(path + name, "wb"

) as code:

code.write(f.read())

print(url) #

輸出路徑

結果

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

如下 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...

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

用requests和beautifulsoup庫爬取上的大學排名 import requests import bs4 from bs4 import beautifulsoup 從網路上獲取大學排名網頁的內容 def gethtmltext url try r requests.get url,t...

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

1 實驗要求 用requests和beautifulsoup庫方法定向爬取給定 的資料,螢幕列印爬取的大學排名資訊。2 實驗 import requests import bs4 from bs4 import beautifulsoup def gethtmltext url try r requ...