1. 程式人生 > >吳裕雄 實戰python編程(3)

吳裕雄 實戰python編程(3)

img text class != 標簽 beautiful start png 面數據

import requests

from bs4 import BeautifulSoup

url = ‘http://www.baidu.com‘
html = requests.get(url)
sp = BeautifulSoup(html.text, ‘html.parser‘)
print(sp)

技術分享圖片

html_doc = """
<html><head><title>頁標題</title></head>

<p class="title"><b>文件標題</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

from bs4 import BeautifulSoup

sp = BeautifulSoup(html_doc,‘html.parser‘)

print(sp.find(‘b‘)) # 返回值:<b>文件標題</b>

print(sp.find_all(‘a‘)) #返回值: [<b>文件標題</b>]

print(sp.find_all("a", {"class":"sister"}))

data1=sp.find("a", {"href":"http://example.com/elsie"})
print(data1.text) # 返回值:Elsie

data2=sp.find("a", {"id":"link2"})
print(data2.text) # 返回值:Lacie

data3 = sp.select("#link3")
print(data3[0].text) # 返回值:Tillie

print(sp.find_all([‘title‘,‘a‘]))

data1=sp.find("a", {"id":"link1"})
print(data1.get("href")) #返回值: http://example.com/elsie

技術分享圖片

import requests

from bs4 import BeautifulSoup

url = ‘http://www.wsbookshow.com/‘
html = requests.get(url)
html.encoding="gbk"

sp=BeautifulSoup(html.text,"html.parser")
links=sp.find_all(["a","img"]) # 同時讀取 <a> 和 <img>
for link in links:
href=link.get("href") # 讀取 href 屬性的值
# 判斷值是否為非 None,以及是不是以http://開頭
if((href != None) and (href.startswith("http://"))):
print(href)

技術分享圖片

import requests

from bs4 import BeautifulSoup

url = ‘http://www.taiwanlottery.com.tw/‘
html = requests.get(url)
sp = BeautifulSoup(html.text, ‘html.parser‘)

data1 = sp.select("#rightdown")
print(data1)

技術分享圖片

data2 = data1[0].find(‘div‘, {‘class‘:‘contents_box02‘})
print(data2)
print()

data3 = data2.find_all(‘div‘, {‘class‘:‘ball_tx‘})
print(data3)

技術分享圖片

import requests
from bs4 import BeautifulSoup

url1 = ‘http://www.pm25x.com/‘ #獲得主頁面鏈接
html = requests.get(url1) #抓取主頁面數據
sp1 = BeautifulSoup(html.text, ‘html.parser‘) #把抓取的數據進行解析

city = sp1.find("a",{"title":"北京PM2.5"}) #從解析結果中找出title屬性值為"北京PM2.5"的標簽
print(city)
citylink=city.get("href") #從找到的標簽中取href屬性值
print(citylink)
url2=url1+citylink #生成二級頁面完整的鏈接地址
print(url2)

html2=requests.get(url2) #抓取二級頁面數據
sp2=BeautifulSoup(html2.text,"html.parser") #二級頁面數據解析
#print(sp2)
data1=sp2.select(".aqivalue") #通過類名aqivalue抓取包含北京市pm2.5數值的標簽
pm25=data1[0].text #獲取標簽中的pm2.5數據
print("北京市此時的PM2.5值為:"+pm25) #顯示pm2.5值

技術分享圖片

import requests,os
from bs4 import BeautifulSoup
from urllib.request import urlopen

url = ‘http://www.tooopen.com/img/87.aspx‘

html = requests.get(url)
html.encoding="utf-8"

sp = BeautifulSoup(html.text, ‘html.parser‘)

# 建立images目錄保存圖片
images_dir="E:\\images\\"
if not os.path.exists(images_dir):
os.mkdir(images_dir)

# 取得所有 <a> 和 <img> 標簽
all_links=sp.find_all([‘a‘,‘img‘])
for link in all_links:
# 讀取 src 和 href 屬性內容
src=link.get(‘src‘)
href = link.get(‘href‘)
attrs=[src,src]
for attr in attrs:
# 讀取 .jpg 和 .png 檔
if attr != None and (‘.jpg‘ in attr or ‘.png‘ in attr):
# 設置圖片文件完整路徑
full_path = attr
filename = full_path.split(‘/‘)[-1] # 取得圖片名
ext = filename.split(‘.‘)[-1] #取得擴展名
filename = filename.split(‘.‘)[-2] #取得主文件名
if ‘jpg‘ in ext: filename = filename + ‘.jpg‘
else: filename = filename + ‘.png‘
print(attr)
# 保存圖片
try:
image = urlopen(full_path)
f = open(os.path.join(images_dir,filename),‘wb‘)
f.write(image.read())
f.close()
except:
print("{} 無法讀取!".format(filename))

技術分享圖片

吳裕雄 實戰python編程(3)