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

2022-08-10 07:18:11 字數 3595 閱讀 7574

(1)實驗要求:

用requests和beautifulsoup庫方法定向爬取給定**( )的資料,螢幕列印爬取的大學排名資訊。

(2)實驗**:

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, 50)#只列出50所學校的資訊

main()

(3)實驗結果:

(4)心得體會:

第一次使用未免生疏,更加強了對py庫的理解,認識了一些函式的使用

(1)實驗要求:

(2)實驗**:

import requests

import re

def gethtmltext(url):

headers=

try:

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

r.raise_for_status()

return r.text

except:

return ""

def parsepage(ilt,html):

#正規表示式獲取商品名稱和商品**

try:

#使用正規表示式,\表示引入乙個"view_price"的鍵,後面\引入鍵的值

plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)

#*?表示最小匹配

tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)

for i in range(len(plt)):

price = eval(plt[i].split(":")[1])

title = eval(tlt[i].split(":")[1])

except:

print(" ")

def printgoodslist(ilt):

tplt = "\t\t"

print(tplt.format("序號","**","商品名稱"))

count = 0

for x in ilt:

count = count + 1

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

def main():

goods = '衛衣'

depth = 2

star_url = '' +goods

infolist =

for i in range(depth):

try:

url = star_url + '&s=' + str(44*i)

html = gethtmltext(url)

parsepage(infolist,html)

except:

continue

printgoodslist(infolist)

main()

(3)實驗結果:

我先是檢查自己的url是不是正確的,複製程式中的url在瀏覽器開啟,發現可以進入**,url是正確的。

不是url的問題,那就是**的問題了,原來**設定反爬蟲機制,需要使用者登入驗證。爬取時需要模擬瀏

覽器登入才能獲取資訊。最後在原來的**寫乙個headers字典模擬瀏覽器請求訪問,放入剛才複製的cookie和user-agent

(1)實驗要求:

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

(2)實驗**:

import requests

import urllib.request

from bs4 import beautifulsoup

def getmoviesimg():

url = requests.get('')

#獲取**資料

html = url.text

#解析網頁

soup = beautifulsoup(html,'html.parser')

#獲取所有的img標籤

movie = soup.find_all('img')

x = 1

for i in movie:

# 獲取src路徑

imgsrc = i.get('src')

#判斷src路徑是否以指定內容開頭(過濾頁面中的其它不想要的)

if imgsrc.startswith(''):

# print(imgsrc)

#本地路徑

#將url表示的網路物件複製到本地檔案

urllib.request.urlretrieve(imgsrc , filename)

x += 1

getmoviesimg()

(3)實驗結果:

(4)實驗新心得:

網頁中還有很多其它的,也是放在img標籤裡的,需要把這些過濾掉;

有一些src是空的,.urlretrieve()函式就會報錯:valueerror: unknown url type: ''。

由於一些錯誤還沒解決,暫時沒跑出來

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

如下 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庫方法定向爬取給定 的資料,螢幕列印爬取的大學排名資訊。列印示例 排名 學校名稱 省市 學校型別 1 清華大學 北京 綜合 from bs4 import beautifulsoup import urllib.request url req url...