<h2>代碼</h2>
<pre>
from bs4 import BeautifulSoup
import requests
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
}
def download(url):
r = requests.get(url,headers = headers)
if r.status_code != 200:
return
filename = url.split("?")[0].split("/")[-2]
target = "./{}.jpg".format(filename)
with open (target,"wb") as fs:
fs.write(r.content)
print("%s => %s" % (url, target))
def main():
#獲取1到10頁(yè)的圖片:
for page in range(1,10):
url = 'http://weheartit.com/inspirations/taylorswift?scrolling=true&page={}.'.format(page)
r = requests.get(url, headers=headers)
#檢查是否訪問(wèn)正常,正常狀態(tài)碼是200退个,異常則跳過(guò)
if r.status_code != 200:
continue
#解析網(wǎng)頁(yè)得到地址并下載
soup = BeautifulSoup(r.text, 'html.parser')
imgs = soup.find_all('img',class_='entry-thumbnail')
for img in imgs:
src = img.get('src')
download(src)
if name == "main":
main()
只有直接運(yùn)行腳本才會(huì)執(zhí)行main函數(shù)
</pre>
<h2>成果</h2>
<h2>總結(jié)</h2>
編寫(xiě)前的思考:
1.找到異步加載數(shù)據(jù)作為啟示頁(yè)
2.請(qǐng)求解析
3.定位元素励背,這里我想做道附加題二鳄,爬取圖片鏈接后的大圖
4.篩選信息
5.爬取多頁(yè)
編寫(xiě)時(shí)發(fā)現(xiàn)沒(méi)有辦法請(qǐng)求到相關(guān)數(shù)據(jù)吵取√保看了答案后才發(fā)現(xiàn)自己的思路與答案有很大的偏差迎膜。首先是代理問(wèn)題敌呈。我的電腦上裝喲全局VPN,所有沒(méi)有填寫(xiě)代理徽缚。其次是瀏覽器的偽裝憨奸,可能之前就是因?yàn)闆](méi)有偽裝所以爬取不到數(shù)據(jù)革屠。這次的作業(yè)主要是參考答案完成的凿试。對(duì)于 download函數(shù)的編寫(xiě)還不是很明白,主要是其中的split等方法的具體規(guī)則還不清楚似芝。
在編寫(xiě)的過(guò)程中那婉,答案所給的網(wǎng)址是“beach”而作業(yè)要求的網(wǎng)址是“Taylor Swift”,其次答案中的地址也改變了党瓮。
<h2>反思</h2>
download函數(shù)的左右一是下載圖片详炬,二是將下載的圖片名稱打印出來(lái)。