網路爬蟲——爬蟲實戰(一)
圖片爬蟲實戰
假如我們想把jd商城的商品圖片下載到本地,通過手工複製貼上將是一份非常龐大的工程,此時,可以用Python網路爬蟲實現。我們可以通過Python網路爬蟲將這些網頁上的圖片全部爬取到本地,這類爬蟲稱為圖片爬蟲。
首先開啟jd商城的首頁,在搜尋輸入框中輸入想要爬取的商品,例如:褲子。如下圖所示:
再檢視該網頁的網址,該網址就是我們需要爬取的起始頁面,如下圖所示:
一、匯入模組
import re
from urllib import request as req
from urllib import parse as pa
二、主函式
if __name__=="__main__":
key = input("請輸入關鍵字:")
wd = {'keyword': key}
keyword = pa.urlencode(wd)
controllspider('https://search.jd.com/Search?'+keyword+'&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E8%A3%A4%E5%AD%90')
key:即我們需要下載圖片的商品名稱
urlencode():urllib庫裡的parse模組,對關鍵字進行編碼
controllspider:爬蟲控制器,負責整個爬取過程的排程
三、爬蟲控制器
def controllspider(url):
'''
功能:爬蟲的控制器,負責整個爬取過程的排程
:param url:初始爬取的url
:return:
'''
# 爬蟲控制開關
flag = True
page = 1
while flag:
flag = False
print("\n\n\n")
print("--------------------------------------正在爬取第%s頁-------------------------------------------------------"%page)
urls= url+'&page='+str(page)
product_list=spider(urls)
downloadimg(product_list)
control_input = input("是否繼續?(按enter繼續,Q退出)")
if control_input != 'Q':
flag = True
page += 1
爬取過程中,可進行互動功能,由使用者決定是否繼續爬取。
控制器(controllspider)將需要爬取的URL連結交給爬蟲(spider),爬蟲(spider)返回圖片連結的集合。
控制器(controllspider)再將返回的圖片連結集合交給下載器(downloadimg),將圖片下載至本地。
控制器(controllspider)會判斷是否滿足停止條件。
四、爬蟲spider
def spider(url):
'''
功能:獲取圖片連結
:param url: 待爬取的網頁url連結
:return: 返回該頁所有的商品圖片的連結
'''
headers={'User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'}
request=req.Request(url,headers=headers)
html=req.urlopen(request)
html=str(html.read())
print(url)
#pattern1='<li class="gl-item">.*? </li>'
pattern1 = 'class="gl-item".*?</li>'
results1=re.compile(pattern1).findall(html)
print(results1)
product_list=[]
for result in results1:
product_dict = {}
pattern2='//img.*?"'
imageurl=re.compile(pattern2).findall(result)
product_dict['imageurl'] = imageurl
product_list.append(product_dict)
return product_list
headers :在使用python爬蟲爬取資料的時候,經常會遇到一些網站的反爬蟲措施,一般就是針對於headers中的User-Agent,如果沒有對headers進行設定,而如果網站有反爬蟲的話會拒絕這樣的連線,因此修改headers可以將自己的爬蟲指令碼偽裝成瀏覽器的正常訪問。
re正則的使用:呼叫urlopen函式,返回HTML內容,呼叫**str(html)**函式將其轉換為字串。結合我上一篇的正規表示式用法,將字串裡面的所有圖片連結URL匹配完成,返回URL集合。
五、下載器
def downloadimg(product_list):
'''
功能:根據URL下載圖片
:param product_list: 圖片URL集合
:return:
'''
for product in product_list:
imageurl = product['imageurl']
imageurl = imageurl[0].replace('"', '')
imageurl = "http:" + imageurl
print(imageurl)
filename='image\\'+str(imageurl)[-20:]
headers={'User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'}
request=req.Request(imageurl,headers=headers)
html=req.urlopen(request).read()
with open(filename,'wb') as f:
f.write(html)
根據圖片的URL連結,獲取html的相應內容,再將其寫入到本地(圖片需要用"wb"模式進行寫入)。
五、效果演示
六、結束語
最後,祝大家都能夠學有所成!!!
相關文章
- 網路爬蟲(六):實戰爬蟲
- Python網路爬蟲實戰Python爬蟲
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- 爬蟲實戰爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 網路爬蟲爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- Python網路爬蟲實戰(一)快速入門Python爬蟲
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰scrapy爬蟲
- 爬蟲學習之一個簡單的網路爬蟲爬蟲
- 《用Python寫網路爬蟲》--編寫第一個網路爬蟲Python爬蟲
- Python3 大型網路爬蟲實戰 — 給 scrapy 爬蟲專案設定為防反爬Python爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- python爬蟲實戰,爬蟲之路,永無止境Python爬蟲
- 圖靈樣書爬蟲 - Python 爬蟲實戰圖靈爬蟲Python
- 網路爬蟲精要爬蟲
- 網路爬蟲示例爬蟲
- 《網路爬蟲開發實戰案例》筆記爬蟲筆記
- 乾貨分享!Python網路爬蟲實戰Python爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python 3網路爬蟲開發實戰Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- python網路爬蟲實戰--重點整理Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- Python 爬蟲實戰(2):股票資料定向爬蟲Python爬蟲
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- Puppeteer爬蟲實戰(三)爬蟲
- 爬蟲技術實戰爬蟲
- Python 爬蟲實戰Python爬蟲
- 爬蟲利器 Puppeteer 實戰爬蟲
- Java網路爬蟲實操(10)Java爬蟲