1. 程式人生 > >python 最簡單的爬蟲

python 最簡單的爬蟲

一個簡單的爬蟲工程

環境:

OS:Window10

python:3.7

 安裝一些庫檔案

pip install requests
pip install beautifulsoup4
pip install lxml

 

在安裝的時候如果遇到了你的pip版本過低的錯誤的話,可以找到你本地的C:\Users\XXX\PycharmProjects\getHtml\venv\Lib\site-packages下面的pip-18.1.dist-info資料夾刪除,之後在進行更新

 

下面是提取一個網頁的圖片程式碼

import time

import requests
import os
import threading

from bs4 import BeautifulSoup


class BeautifulPicture():

    def __init__(self):
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
        self.web_url = "https://unsplash.com/"
        self.folder_path = r'C:\Users\peiqiang\Desktop\python Pic'

    def request(self, url):
        r = requests.get(url)
        return r

    def mkdir(self, path):
        path = path.strip()
        isExists = os.path.exists(path)
        if not isExists:
            print("建立名字叫做", path, "的資料夾")
            os.makedirs(path)
            print("建立成功!")
        else:
            print(path, '資料夾已經存在了,不再建立')

    def save_img(self, url, name):
        print('開始儲存圖片...')
        img = self.request(url)
        file_name = self.folder_path + '\{}.jpg'.format(name)
        print('開始儲存檔案')
        f = open(file_name, 'ab')
        f.write(img.content)
        f.close()
        thread_lock.release()
        print(file_name, '檔案儲存成功!')

    def get_pic(self):
        print('開始網頁get請求')
        r = self.request(self.web_url)
        print('開始獲取所有img標籤')
        all_a = BeautifulSoup(r.text, 'lxml').find_all('img')
        print('開始建立資料夾')
        self.mkdir(self.folder_path)
        print('開始切換資料夾')
        os.chdir(self.folder_path)
        i=0
        for a in all_a:
            i += 1
            print("開始下載第{}張圖片".format(i))
            thread_lock.acquire()
            print("抓取圖片的URL:", a["src"])
            self.save_img(a["src"], i)


thread_lock = threading.BoundedSemaphore(value=10)
beauty = BeautifulPicture()
beauty.get_pic()

  效果如下

本地的存放的路徑下