目標網站:https://www.quanjing.com/category/1286521/2.html
爬取搜索出來的所有“中東人”的圖片:
先看一下源代碼,找到存放圖片鏈接的地方,在源代碼最下面的部分:
先說一下思路:
構造url列表=》依次爬取每個頁面=》先在網頁源代碼中找到存放圖片鏈接的地方=》獲取到這一地方的文本=》正則匹配出每個頁面中每張圖片的鏈接=》存儲每張圖片
來看爬取的代碼:
import requests import re from bs4 import BeautifulSoup address = "https://www.quanjing.com/category/1286521/" url_list = [] #用於存儲,每個頁面的url列表 pipei = re.compile('<img.*?lowsrc="(.*?)"') #構造正則表達式,用於下面匹配出每張圖片的鏈接 # 構造url def get_url_list(): for i in range(1, 3): #規定爬取到的頁數,這里爬取到第二頁 url = address + str(i) + '.html' url_list.append(url) return url_list def run(): y = 1 i = 0 for url in get_url_list(): #這個循環用於依次爬取頁面 html = requests.get(url=url).text #請求頁面 soup = BeautifulSoup(html, 'lxml') divs = str(soup.find_all(attrs={"class": "list"})) #獲取存放鏈接的那一部分文本,並轉換為字符串,正則必須是字符串類型要不不能進行匹配 lianjies = re.findall(pipei, divs) #匹配到一個頁面中每一張圖片的鏈接,以列表的形式返回 for lianjie in lianjies: #這個循環用於存儲頁面中的每一張圖片 result = requests.get(url=lianjie).content with open('E:\py project\quanjingwang\image\{}.jpg'.format(i), 'wb') as f: f.write(result) i += 1 print("第{0}張存儲完成".format(i)) print("第{0}頁爬取完成".format({y})) y += 1 if __name__ == '__main__': run()
代碼不難,但爬取速度有點慢,后面試着改成多線程。。。(ps:太菜了,若文章有錯誤,歡迎大佬隨時指正。。)
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。