簡單的python爬蟲實例


目標網站: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刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM