1. 思路
目標(biāo)網(wǎng)頁:http://www.axlcg.com/wmxz/1.html
-
首先取得第一頁每一個圖集的url
可以看到圖集的url實在ul class 為homeboy-ul clearfix line-dot底下的li中的a標(biāo)簽里面粘舟,所以我們要 一層一層地接近目標(biāo)摆马。
allsoup = BeautifulSoup(allurldigit) # 得到解析后的html
allpage = allsoup.find('ul', attrs={'class': 'homeboy-ul clearfix line-dot'})
allpage2 = allpage.find_all('a') #一步找到所有的a標(biāo)簽
for allpage2index in allpage2:
allpage3 = allpage2index['href'] #拿到url
if allpage3 not in allurl: #判斷一下是否已經(jīng)在容器里了,不在的話才加入
allurl.append(allpage3) #存到allurl這個list容器里
-
獲取每一頁的url
只獲取一頁怎么可以叫爬蟲呢,我們要的是獲取多頁。
可以看到下一頁的url就在ul為information-page-ul clearfix底下的一個li中,這時候發(fā)現(xiàn)所有的li標(biāo)簽都是相同的馁痴,那我們怎么才能找到下一頁的url呢?
下一頁的標(biāo)簽中的文字內(nèi)容寫著下一頁肺孤,因此我們可以判斷l(xiāng)i中的文本內(nèi)容是不是下一頁罗晕,是的話跳到下一頁去,爬取下一頁的所有圖集赠堵。
- 獲取真正想要的img地址
隨便點擊一個圖集進去小渊,這時候我們可以看到圖片的地址了。
復(fù)制一下茫叭,驗證是否正確酬屉。
發(fā)現(xiàn)確實是我們想要的。
按同樣的方法去獲得圖片的url并放到一個集合里揍愁,一個圖集里也要跳到下一頁的url呐萨,獲取圖片url,因為每一個頁面只有一張莽囤。
- 下載圖片到本地
urllib.request.urlretrieve(m, "D:/Desktop//image/" + str(count) + ".jpg")
第一個參數(shù)是img的url谬擦,第二個參數(shù)是路徑+圖片的文件名。
2. 結(jié)果
3. 代碼
# !/usr/bin/env python
# encoding=utf-8
# python爬取 http://www.axlcg.com/ 暖享
import requests
from bs4 import BeautifulSoup
import urllib.request
allurl = []
img = []
count= 0
#偽裝成瀏覽器
def download_page(url):
return requests.get(url, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.0 Safari/537.36'
}).content
# 爬取所有圖集的url烁登,放到一個list里
def get_all_url():
firsturl = "http://www.axlcg.com/wmxz/"
pageindex = 0
while 1 and pageindex < 20:
allurldigit = download_page(firsturl) # 首頁面格式化
allsoup = BeautifulSoup(allurldigit) # 得到解析后的html
allpage = allsoup.find('ul', attrs={'class': 'homeboy-ul clearfix line-dot'})
allpage2 = allpage.find_all('a')
for allpage2index in allpage2:
allpage3 = allpage2index['href']
if allpage3 not in allurl:
allurl.append(allpage3)
# 找下一頁的url
next_page1 = allsoup.find('ul', attrs={'class': 'information-page-ul clearfix'})
next_page2 = next_page1.find_all('li')
for next_page2_index in next_page2:
# print(next_page2)
next_page3 = next_page2_index.find('a')
# print(next_page3)
if next_page3.getText() == "下一頁" and next_page3.get("href") != None:
firsturl = next_page3.get("href")
pageindex = pageindex + 1
print("總頁面" + firsturl)
print(allurl)
print(len(allurl))
# 對每一個url進行下載圖片
def main():
get_all_url();
i = 91
pagecount = 0; # 最多八頁
index = 0
url = download_page(allurl[i])
soup = BeautifulSoup(url)
i = i + 1
while index < 1000 and i < len(allurl):
# print(allpage)
# print(soup)
page0 = soup.find("div", attrs={'class': 'slideBox-detail'})
# print(page0)
page = page0.find_all("li")
# print(page)
for pageindex in page:
page2 = pageindex.find("img");
# print(page2)
img.append(page2['src'])
next = soup.find('ul', attrs={'class': 'information-page-ul clearfix'})
next2 = next.find_all('li')
for next_url in next2:
# print(next_url)
next_page = next_url.find("a")
if (pagecount < 7 and next_page.getText() == "下一頁" and next_page != None and next_page.get("href") != None):
# print(next_page.get("href"))
url = next_page.get('href')
pagecount = pagecount + 1
url = download_page(url)
soup = BeautifulSoup(url)
break;
elif (pagecount >= 7):
url = download_page(allurl[i])
soup = BeautifulSoup(url)
pagecount = 0
print(len(img))
download()
print("新的頁面" + allurl[i])
i = i + 1
break
def download():
#print(len(img))
global img,count
print("開始下載圖片")
for m in img:
urllib.request.urlretrieve(m, "D:/Desktop//632/" + str(count) + ".jpg")
count = count+1
print("正在下載第"+str(count)+"張")
img = []
print("下載完畢")
if __name__ == '__main__':
main()
#download();