用mac的python寫網絡爬蟲_在mac下使用python抓取數據

2015已經過去,這是2016的第一篇博文!

祝大家新年快樂!

但是我還有好多期末考試!

還沒開始復習,唉,一把辛酸淚!

最近看了一遍彥祖的文章叫做

所以自己也想小試牛刀.于是便開始動手寫,但初次接觸,還是遇見了很多不懂的東西,于是爬文一個一個解決了,最終抓取了自己想要的東西

彥祖的這篇文章里Python代碼格式有錯,但是解釋是沒錯的!所以我待會兒貼出我能正確運行的代碼

彥祖的文章里說可以直接用類似于cocoapods的Python庫管理工具pip進行安裝我們解析網頁所需要用的第三方庫BeautifulSoup!

Mac確實是自帶了Python.但是并沒有安裝pip,所以需要我們手動進行安裝!

有人說可以使用命令:easy_install pip進行安裝,但是我并沒有安裝成功!百思不得其解

于是爬文尋找其他方法:http://stackoverflow.com/questions/17271319/installing-pip-on-mac-os-x

原來是需要我的超級管理員權限...

至此,安裝Pip成功

第二步:安裝BeautifulSoup!

用彥祖的命令去運行,結果報錯!提示我安裝失敗!(又忘了截圖..)

沒辦法,就嘗試手動安裝BeautifulSoup,結果還是不行

后來我想是不是還是因為沒有管理員權限的原因

于是嘗試加上過后,就安裝成功了

好了,開始寫代碼吧,但是我一個新人連該用什么來寫Python代碼都不知道!

又搜!(好低級的問題)=====>用記事本就行(真方便)(保存為.py文件后,是用的xcode打開的)

于是敲了如下代碼:

1 #!/usr/bin/python

2 #-*- coding: utf-8 -*-

3 #encoding=utf-8

4

5 importurllib26 importurllib7 importos8 from BeautifulSoup importBeautifulSoup9 defgetAllImageLink():10 html = urllib2.urlopen('http://www.dbmeinv.com').read()11 soup =BeautifulSoup(html)12

13 liResult = soup.findAll('li',attrs={"class":"span3"})14

15 for li inliResult:16 imageEntityArray = li.findAll('img')17 for image inimageEntityArray:18 link = image.get('src')19 imageName = image.get('title')20 filesavepath = '/Users/WayneLiu_Mac/Desktop/meizi/%s.png' %imageName21 urllib.urlretrieve(link,filesavepath)22 printfilesavepath23

24

25 if __name__ == '__main__':26 getAllImageLink()

獲得了如下數據(彥祖好邪惡....):

687493-20151228145713807-362674126.jpg

其實python真的很強大的,短短數幾十行代碼就可以實現這些功能!

閑來無事,又完善了一下代碼,用以獲得所有妹子的照片...

1 #!/usr/bin/python

2 #-*- coding: utf-8 -*-

3 #encoding=utf-8

4

5 importurllib26 importurllib7 importos8 importsocket9 from BeautifulSoup importBeautifulSoup10

11

12 defgetAllImageLink():13 xiayiye =True14 page = '/?pager_offset=12'

15 while(1):16 html = urllib2.urlopen('http://www.dbmeinv.com%s' %page).read()17 soup =BeautifulSoup(html)18

19 liResult = soup.findAll('li',attrs={"class":"span3"})20 nextResult = soup.findAll('li',attrs={"class":"next next_page"})21

22

23 for li inliResult:24 imageEntityArray = li.findAll('img')25 nameResult = li.findAll('span',attrs={"class":"starcount"})26 for name innameResult:27 nameTitle = name.get('topic-image-id')28

29 for image inimageEntityArray:30 link = image.get('src')31 filesavepath = '/Users/WayneLiu_Mac/Desktop/meizi2/%s.jpg' %nameTitle32 socket.setdefaulttimeout(30)33 urllib.urlretrieve(link,filesavepath)34 printfilesavepath35

36 for nextPage innextResult:37 aEntityArray = nextPage.findAll('a')38 for a inaEntityArray:39 nextTitle = a.get('title')40 printnextTitle41 page = a.get('href')42 printpage43 if nextTitle.encode('utf-8') != "下一頁":44 xiayiye =False45 printxiayiye46 if xiayiye ==False:47 break

48

49 if __name__ == '__main__':50 getAllImageLink()

呵呵噠...

687493-20151228171525151-632142584.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539414.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539414.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

運輸配送信息Delivery_Information

為什么80%的碼農都做不了架構師?>>> 運輸配送信息Delivery_Information 金銀倉會選用以下運輸公司,為客戶配送磁磚傢俬潔具: 佛山冠昌達中港運輸(散貨或包車,近佛山石灣的磁磚倉庫,近樂從傢俬城…

linux的 dev vdal,RAZVOJ DELA NA DALJAVO V SLOVENIJI

摘要:V diplomskem delu bomo raziskovali razvoj dela na daljavo v Sloveniji. Na? poglavitni cilj je prikazati ?irjenje teledela v Sloveniji. Drugod po Evropi se ?e vrsto let uveljavlja tudi ta vrsta opravljanja dela, pri nas pa manj. O tem lah…

Spring+SpringMVC+Mybatis 多數據源整合

原文地址:http://blog.csdn.net/q908555281/article/details/50316137 ----------------------------------- 此篇文章是基于Spring3.0和mybatis3.2的總體大概流程 :1. 拷貝所需jar 2.寫一個數據庫切換的工具類:DataSourceContextHolder&am…

查看mysql sql執行器優化后的sql

EXPLAIN EXTENDED select s.* from student s where s.sid in ( select sid from sc where sc.cid 0 and sc.score 100); show WARNINGS;

git ssh拉取代碼_win10下git初始安裝及配置工作

git安裝從https://git-scm.com/https://git-scm.com/download/win 中下載安裝包,點擊exe文件運行,選擇安裝路徑即可安裝。git配置初次運行git前的配置,新建文件夾1、 新建一個文件夾,用來存放代碼的文件夾---2、 打開文件夾&#…

用ABAP 生成二維碼 QR Code

除了使用我的這篇blogStep by step to create QRCode in ABAP Webdynpro提到的使用ABAP webdynpro生成二維碼之外,也可以通過使用二維碼在線生成網站提供的service來生成二維碼。 二維碼在線生成網站: www.makepic.com/qrcode.php 在網頁上輸入要生成的二…

c語言不用第三變量,C語言中幾種不用第三變量交換兩值的方法

int main(){int a3,b4;int *p(int *)malloc(sizeof(int));*p3;int *q(int *)malloc(sizeof(int));*q4;int a24,b27;printf("***位運算****/n");printf("轉換前:%d %d/n",a,b);a^b^a^b;printf("轉換后:%d %d/n",a,b);print…

聯想m7400pro清零方法_聯想打印機怎么清零 聯想打印機清零方法【教程】

今天小編為讀者挑選出了聯想 打印機 部分機型的清零方式,希望閱讀完這篇文章能幫助到各位。LJ3010A、LJ3116A、LJ3220A清零方式先點擊控制面板上的“聯機”按鈕,讓打印機處于脫機狀態,再點擊“執行”按鈕進行打印。先點擊控制面板上的“聯機”…

mapperLocations屬性通配符的使用

mapperLocations屬性通配符的使用 示例&#xff1a; [html] view plaincopy <bean id"sqlSessionFactory" class"org.mybatis.spring.SqlSessionFactoryBean"> <property name"dataSource" ref"dataSource" /> …

c語言中數組名可以與其他變量名相同,C語言初學者入門講座?第九講?數組(1)...

C語言初學者入門講座 第九講 數組(1)(2007-01-17 11:39:19)數組在程序設計中&#xff0c;為了處理方便&#xff0c;把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。在C語言中&#xff0c;數組屬于構造數據類型。一個數組可以分解為…

pb通過對象名稱調用對象_C++ 可調用對象(二)

點擊上方“藍字”&#xff0c;發現更多精彩。本文在前一篇關于函數對象、bind 函數的基礎上&#xff0c;對 C 中 lambda不表達式的使用進行總結。lambda01PART定義一個 lambda 表達式表示一個可調用的代碼單元&#xff0c;可以理解為是一個未命名的內斂函數。類似任何函數&…

easyui datagrid 表格組件列屬性formatter和styler使用方法

明確單元格DOM結構 要想弄清楚formatter和styler屬性是怎么工作的&#xff0c;首先要弄清楚datagrid組件內容單元格的DOM接口&#xff0c;注意&#xff0c;這里指的是內容單元格&#xff0c;不包括標題單元格&#xff0c;標題單元格的結構有所區別。我們所有內容單元格的默認DO…

c+++11并發編程語言,C++11并發編程:多線程std:thread

原標題&#xff1a;C11并發編程&#xff1a;多線程std:thread一&#xff1a;概述C11引入了thread類&#xff0c;大大降低了多線程使用的復雜度&#xff0c;原先使用多線程只能用系統的API&#xff0c;無法解決跨平臺問題&#xff0c;一套代碼平臺移植&#xff0c;對應多線程代碼…

交換機虛擬化和堆疊的區別_核心交換機和普通交換機有何區別?

提起核心交換機與普通交換機有什么區別&#xff1f;相信很多朋友都有點迷惑&#xff0c;今天我們一起來了解下。核心交換機并不是交換機的一種類型&#xff0c;而是放在核心層(網絡主干部分)的交換機叫核心交換機。一般大型企業網絡和網吧需要購買核心交換機來實現強大的網絡擴…

tmpfiles.d導致的unix:///tmp/supervisor.sock no such file坑(待續)

為什么80%的碼農都做不了架構師&#xff1f;>>> 系統環境: CentOS Linux release 7.1.1503 (Core) supervisor 3.3.1今天初七&#xff0c;剛放完假需要去supervisor restart下程序。發現報了這個錯誤。但是看supervisord的進程還在運行&#xff0c;項目代碼也還在…

springMVC兩種方式實現多文件上傳及效率比較

springMVC實現多文件上傳的方式有兩種&#xff0c;一種是我們經常使用的以字節流的方式進行文件上傳&#xff0c;另外一種是使用springMVC包裝好的解析器進行上傳。這兩種方式對于實現多文件上傳效率上卻有著很大的差距&#xff0c;下面我們通過實例來看一下這兩種方式的實現方…

c語言 個位,如何才能給C語言增加幾個位操作函數

在匯編語言中有直接對位進行操作的指令&#xff0c;如置位、復位、位取反、測試某一位等&#xff0c;這對于硬件操作十分方便&#xff0c;在C語言中盡管也提供了一些位操作手段&#xff0c;如按位與、按位或、按位取反等&#xff0c;但它們是對一個字節進行操作&#xff0c;如要…

hsrp 切換_HSRP、VRRP、GLBP | 網絡工程師之網關高可用、冗余

在RS的學習過程中我們接觸到很多網絡技術&#xff0c;后面就把工作中常用的拿來與大家分享&#xff0c;本次我們來分享網關冗余技術。當我們的網關設備無法使用堆疊(VSS,istack&#xff0c;IRF)&#xff0c;或者不同廠商設備的時候&#xff0c;非常有效&#xff0c;能夠提供網關…

Linux文件系統詳解

從操作系統的角度詳解Linux文件系統層次、文件系統分類、文件系統的存儲結構、不同存儲介質的區別(RAM、ROM、Flash)、存儲節點inode。本文參考&#xff1a; http://blog.chinaunix.net/uid-8698570-id-1763151.htmlhttp://www.iteye.com/topic/816268http://soft.chinabyte.co…

opencv機器學習線性回歸_機器學習(線性回歸(二))

Lasso與嶺回歸的同和異Lasso、嶺回歸都可以預防模型過擬合Lasso回歸懲罰項為L1正則&#xff0c;嶺回歸為L2正則Lasso回歸可用來特征選擇&#xff0c;嶺回歸則不能Lasso回歸用坐標下降法求解&#xff0c;嶺回歸用梯度下降法求解。為什么Lasso可用于特征選擇&#xff0c;而嶺回歸…