1. 程式人生 > >初學python,爬蟲小專案

初學python,爬蟲小專案

初學python看完基礎教程後,利用從視訊學來的知識,利用urllib2和BeautifulSoup庫,在python2.7環境下編寫一個小爬蟲,爬取應屆生求職網上西安的校招宣講會資訊。

程式碼如下:

# coding=utf-8
import urllib2
from  bs4 import BeautifulSoup
urlstart='http://my.yingjiesheng.com/index.php/personal/xjhinfo.htm/?page='#為了方便翻頁將網址程式碼分成兩部分
urlend='&cid=&city=21&word=&province=0&schoolid=&sdate=&hyid=0'
for i in range(1,20):#從網站上直接獲取頁面個數
    print '正在列印第'+str(i)
    url=urlstart+str(i)+urlend#整理網站地址
    request=urllib2.urlopen(url)#用urllib2開啟網站
    html=request.read()#讀取網站程式碼
    bs=BeautifulSoup(html,'html.parser',from_encoding='utf-8')#BeautifulSoup整理網站程式碼
    alllist1=bs.find_all('tr',class_='bg0')#每一頁的資訊分為兩個部分
    alllist2=bs.find_all('tr',class_='bg1')
    alllist=alllist1+alllist2#整理資訊
    for contenttd in alllist:
        row=[]
        mouth=contenttd.find('td',width="115").text#定位到宣講時間字元位置
        companyweb=contenttd.find('td',width='140').find('a').get('href')#定位到宣講企業網站
        if "http" not in companyweb:
            companyweb="http://my.yingjiesheng.com/"+str(companyweb)#有些企業網站存在省略現象,滑鼠放在網站上可以看到完整網站包含http://頭部,對有省略的網址加上這一部分
        companyname=contenttd.find('td',width='140').find('a').text#定位宣講企業名字
        xuexiao=contenttd.find('td',width='140').next_sibling.next_sibling.text#定位宣講學校名字,這裡第一個兄弟節點通常是空,所以再定位一次兄弟節點。具體可以看BeautifulSoup官方文件有解釋
        jiaoshi=contenttd.find('td',width='140').next_sibling.next_sibling.next_sibling.next_sibling.text#定位宣講學校教室資訊
        row.append(mouth)
        row.append(companyweb)
        row.append(companyname)
        row.append(xuexiao)
        row.append(jiaoshi)
        for j in range(0,len(row)):
            print row[j]
        #print row         #列印以上資訊,如果直接列印row,中文不會出現

第一次做出一個python的爬蟲還是蠻有成就感的,這裡謝謝@王大寶的CD博主提供的一些思路

這裡還沒有爬取到宣講會時間,主要是由於時間便籤採用的是img標籤,還不知道怎麼獲取img標籤的具體圖片資訊,歡迎賜教

這一次只是寫了一個定向爬取靜態網頁的爬蟲,下一步準備學習如何爬取動態網頁,以及如何利用MongDB儲存所爬資料