日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫之旅_(数据解析)_正则

發布時間:2024/9/30 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫之旅_(数据解析)_正则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:
正則表達式有時在寫腳本很方便,記錄一下自己的學習過程!

正則練習

import re # key = 'shy lemon' #輸出lemon # test = re.findall('lemon',key)[0] # print(test) # lemon# 利用正則提取出整個內容 # key = "hello world" # test = re.findall('(.*)',key)[0] # print(test) # hello world# 提取出數字 # string = '高190' # test = re.findall('\d+',string)[0] # print(test) # 190#提取出shy. # key='lemon@shy.edu.com' # test = re.findall('s.*?\.',key)[0] # print(test)#匹配sas和saas key='saas and sas and saaas' test = re.findall('sa{1,2}',key) print(test)

用正則爬取圖片

這次就來通過爬取糗圖百科的糗圖來練習正則表達式

先進行分析

觀察到圖片鏈接都是在這個<div class="thumb">下面的,所以范圍就確定了,復制下來

<div class="thumb"><a href="/article/123149666" target="_blank"> <img src="//pic.qiushibaike.com/system/pictures/12314/123149666/medium/6SOFQC0SLNI8BBU3.jpg" alt="糗事#123149666" class="illustration" width="100%" height="auto"> </a> </div> 寫出匹配的正則表達式 ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'

那下面就沒有什么可以分析的了,直接寫腳本:

import re import requests import os if __name__ == '__main__':url = 'https://www.qiushibaike.com/imgrank/'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}#創建一個文件夾,保存圖片if not os.path.exists('./img'):os.mkdir('./img')page_text = requests.get(url=url,headers=headers).text#使用正則ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'img_src_list = re.findall(ex,page_text,re.S)# print(img_src_list)for src in img_src_list:#拼接圖片地址src = 'https:'+src#獲取響應的二進制數據img_data =requests.get(url=src,headers=headers).content#生成圖片名稱img_name = src.split('/')[-1]img_path = './img/'+img_namewith open(img_path,'wb') as fp:fp.write(img_data)print(img_name,'下載成功!')


雖說爬取成功了,但是我們爬取的只是一頁,如果是多頁的話還需要進一步處理,分析一下第二頁和第三頁的url有什么區別

發現只是數字在變化,那只要我們將url自動變化,這樣不就可以請求到多頁了,腳本如下:

import re import requests import os if __name__ == '__main__':#設置一個通用的url模板url = 'https://www.qiushibaike.com/imgrank/page/%d'# page_num = 1headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}#創建一個文件夾,保存圖片if not os.path.exists('./img'):os.mkdir('./img')for page_num in range(1,5):#對應頁碼的urlnew_url = format(url%page_num)page_text = requests.get(url=new_url,headers=headers).text#使用正則ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'img_src_list = re.findall(ex,page_text,re.S)# print(img_src_list)for src in img_src_list:#拼接圖片地址src = 'https:'+src#獲取響應的二進制數據img_data =requests.get(url=src,headers=headers).content#生成圖片名稱img_name = src.split('/')[-1]img_path = './img/'+img_namewith open(img_path,'wb') as fp:fp.write(img_data)print(img_name,'下載成功!')


爬取成功

總結

以上是生活随笔為你收集整理的Python爬虫之旅_(数据解析)_正则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。