(1)實驗要求:
用requests和beautifulsoup庫方法定向爬取給定**( )的資料,螢幕列印爬取的大學排名資訊。
(2)實驗**:
(3)實驗結果: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()
(4)心得體會:
第一次使用未免生疏,更加強了對py庫的理解,認識了一些函式的使用
(1)實驗要求:
(2)實驗**:
(3)實驗結果: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()
我先是檢查自己的url是不是正確的,複製程式中的url在瀏覽器開啟,發現可以進入**,url是正確的。
不是url的問題,那就是**的問題了,原來**設定反爬蟲機制,需要使用者登入驗證。爬取時需要模擬瀏
覽器登入才能獲取資訊。最後在原來的**寫乙個headers字典模擬瀏覽器請求訪問,放入剛才複製的cookie和user-agent
(1)實驗要求:
爬取乙個給定網頁(或者自選網頁的所有jpg格式檔案
(2)實驗**:
(3)實驗結果: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()
(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...