python爬蟲入門教程之糗百圖片爬蟲代碼分享
學(xué)習(xí)python少不了寫爬蟲,不僅能以點(diǎn)帶面地學(xué)習(xí)、練習(xí)使用python,爬蟲本身也是有用且有趣的,大量重復(fù)性的下載、統(tǒng)計(jì)工作完全可以寫一個(gè)爬蟲程序完成。
用python寫爬蟲需要python的基礎(chǔ)知識(shí)、涉及網(wǎng)絡(luò)的幾個(gè)模塊、正則表達(dá)式、文件操作等知識(shí)。昨天在網(wǎng)上學(xué)習(xí)了一下,寫了一個(gè)爬蟲自動(dòng)下載「糗事百科」里面的圖片。源代碼如下:
# -*- coding: utf-8 -*-
# 上面那句讓代碼里支持中文
#---------------------------------------
# 程序:糗百圖片爬蟲
# 版本:0.1
# 作者:趙偉
# 日期:2013-07-25
# 語言:Python 2.7
# 說明:能設(shè)置下載的頁數(shù)。沒有做更多抽象和交互方面的優(yōu)化。
#---------------------------------------
import urllib2
import urllib
import re
#正則表達(dá)式,用來抓取圖片的地址
pat = re.compile('<div class="thumb">\\n<img src=\"(ht.*?)\".*?>')
#用來合成網(wǎng)頁的URL
nexturl1 = "http://m.qiushibaike.com/imgrank/page/"
nexturl2 = "?s=4582487&slow"
#頁數(shù)計(jì)數(shù)
count = 1
#設(shè)置抓取的頁數(shù)
while count < 3:
print "Page " + str(count) + "\n"
myurl = nexturl1 + str(count) + nexturl2
myres = urllib2.urlopen(myurl)#抓取網(wǎng)頁
mypage = myres.read()#讀取網(wǎng)頁內(nèi)容
ucpage = mypage.decode("utf-8") #轉(zhuǎn)碼
mat = pat.findall(ucpage)#用正則表達(dá)式抓取圖片地址
count += 1;
if len(mat):
for item in mat:
print "url: " + item + "\n"
fnp = re.compile('/(\w+\.\w+)$')#下面三行分離出圖片文件的名稱
fnr = fnp.findall(item)
fname = fnr[0]
urllib.urlretrieve(item, fname)#下載圖片
else:
print "no data"
使用方法:新建一個(gè)practice文件夾,將源代碼保存為qb.py文件,并放在practice文件夾中,在命令行里執(zhí)行python qb.py,即開始下載圖片??梢孕薷脑创a里面的while語句設(shè)置下載的頁數(shù)。
相關(guān)文章
Python?PaddleGAN實(shí)現(xiàn)調(diào)整照片人物年齡
這篇文章主要介紹了通過PaddleGAN實(shí)現(xiàn)照片人物的老年化和年輕化處理,文中的示例代碼講解有效,對(duì)我們學(xué)習(xí)或工作有一定的幫助,感興趣的可以學(xué)習(xí)一下2021-12-12解決Python中由于logging模塊誤用導(dǎo)致的內(nèi)存泄露
這篇文章主要介紹了解決Python中由于logging模塊誤用導(dǎo)致的內(nèi)存泄露,針對(duì)由于過多的UDP連接所產(chǎn)生的問題,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)時(shí)間o(1)的最小棧的實(shí)例代碼
這篇文章主要介紹了python實(shí)現(xiàn)時(shí)間o(1)的最小棧的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07將Django使用的數(shù)據(jù)庫從MySQL遷移到PostgreSQL的教程
這篇文章主要介紹了將Django使用的數(shù)據(jù)庫從MySQL遷移到PostgreSQL的教程,同時(shí)提到了一些注意事項(xiàng),需要的朋友可以參考下2015-04-04用python實(shí)現(xiàn)日志文件,并且按時(shí)間命名文件名方式
這篇文章主要介紹了用python實(shí)現(xiàn)日志文件,并且按時(shí)間命名文件名方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例
這篇文章主要介紹了使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05