主要內容
_抓取範例網頁的屬性資料
_爬取TQCPLUS官網的考生見證圖檔
1.抓取範例網頁的屬性資料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
from bs4 import BeautifulSoup html = """ <html><head><title>網頁標題</title></head> <h1>文件標題</h1> <div class="content"> <div class="item1"> <a href="http://example.com/one" class="red" id="link1">First</a> <a href="http://example.com/two" class="red" id="link2">Second</a> </div> <a href="http://example.com/three" class="blue" id="link3"> <img src="three.jpg">Third </a> </div> """ sp = BeautifulSoup(html,"html.parser") # 問題: # 1.取得 <title>網頁標題</title> print("1.取得 <title>網頁標題</title>") print(sp.find("title")) # 2.取得 http://example.com/one print("2.取得 http://example.com/one") print(sp.find("a",id="link1").get("href")) print(sp.a["href"]) # 3.取得所有類別為red的超連結 print("3.取得所有類別為red的超連結") list1=sp.find_all("a","red") for i in range(len(list1)): print(list1[i].get("href")) # 4.取得 First print("4.取得 First") print(sp.find("a",id="link1").text) # 5.取得所有 [<title>網頁標題</title>, <h1>文件標題</h1>] print("5.取得所有 [<title>網頁標題</title>, <h1>文件標題</h1>]") print(sp.find_all(["title","h1"])) # 6.取得three.jpg print("6.取得three.jpg") print(sp.find("img").get("src")) print(sp.img["src"]) |
2.爬取TQCPLUS官網的考生見證圖檔
取得連結的方式都是find_all( ) 或 find( )搭配使用,取得 a標籤的href屬性值
儲存成圖檔的方式是先使用requests模組取得圖檔內容
再用open建立寫入的二進制文件,然後將圖檔內容寫入這個二進制文件
f.write(img.content)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import requests from bs4 import BeautifulSoup html = requests.get("https://www.tqcplus.org.tw/ExpList.aspx?oc=t&p=1") sp= BeautifulSoup(html.text, "html.parser") sp1=sp.find("div","sp-simpleportfolio-items") sp2 = sp1.find_all("img") for i in range(len(sp2)): img=requests.get(sp2[i].get("src")) #儲存所有圖檔,檔名為原來的檔名 # f=open(sp2[i].get("src")[(sp2[i].get("src").rfind("\\")+1):99],"wb") print(sp2[i].get("src")[(sp2[i].get("src").rfind("\\")+1):99]) # f.write(img.content) # f.close() #存入選定的資料夾 # f=open("images\\"+sp2[i].get("src")[(sp2[i].get("src").rfind("\\")+1):99],"wb") print("images\\"+sp2[i].get("src")[(sp2[i].get("src").rfind("\\")+1):99]) # f.write(img.content) # f.close() |
sp2[i].get("src")[(sp2[i].get("src").rfind("\\")+1):99]
get(“src”)[ ],可以將取得的src的字串資料分割,[0]->第1個字、[0:2]->取得第1~2個字
rfind( ),取得目標字串最後一次出現的位置,”\\”,第1個\是跳脫字元,結合起來就是要取得 \ 在字串中最後出現的位置
兩者結合起來就是取得 \ 之後的文字