Python實戰(zhàn)課程第一周筆記

??? 經朋友介紹斤蔓,認識到了python實戰(zhàn):四周實習爬蟲系統(tǒng),然后看了一下試看教程阻桅,覺得課程挺不錯的,→_→重點是對于學生黨有點貴啊彭则,經過幾天糾結還是決定加入這個課程了鳍刷。

??? 現(xiàn)在就不多說廢話了,直接寫心得俯抖,首先按照課程要求安裝lxml输瓜,Beautiful Soup ,Requests芬萍,對了尤揣,忘記說我的環(huán)境,WIN7 64位,python3.4版本柬祠,其實有心換MAC北戏,奈何非我們這種普通人買的起的,所以就WIN環(huán)境先用著漫蛔,因為我提前裝了PIP嗜愈,安裝這些都挺容易的旧蛾,直接pip3 install xxxx就行了,反正我中間沒有遇到錯誤蠕嫁。

??? 什么環(huán)境也準備好了锨天,然后開基礎課程,什么認識網頁結構之類的就不多說了剃毒,反正我也只是了解一下這個病袄,說具體的也不是太懂。然后主要是定位網頁元素了赘阀,我們重點是要學習這個益缠,用google chrome瀏覽器中的檢查,就可以查詢到結構基公。當然剛開始都是比較簡單的幅慌,我覺得是比較好學的。

??? 剩下的就是import各種庫轰豆,然后使用代碼了:

剛開始用BeautifulSoup還是認真的打一下代碼吧欠痴,soup = BeautifulSoup(html,'lxml')

這是soup html都是變量? lxml是解析網頁用的五個庫中的一個

??? 課程中所講的節(jié)點什么的似乎沒什么難的,兄弟節(jié)點和父子節(jié)點應該都是可以看得懂的秒咨,只要學過高中生物遺傳部分的應該都不難看懂。

??? 剩下的就是自己實際操作了掌挚,課程自帶的網頁就是很好的練手工具了雨席,初步練手之后就是實戰(zhàn)58同城了。

?? 先爬一個界面下的詳細信息吠式,源代碼如下

url = 'http://bj.58.com/pingbandiannao/25853969546167x.shtml'
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')

??? url這個不用說了陡厘,是你要訪問的地址,然后用requests獲取內容儲存到變量wb_data中特占,然后使用BeauifulSoup解析到soup變量中糙置,然后我們來提取一下想要的內容,

title = soup.title.text
price = soup.select('#content span.price')
data = soup.select('.time')
area = soup.select('.c_25d')


??? 這里就是提取想要的內容是目,因為標題是直接顯示在網頁頭的谤饭,所以使用了取巧方法titile.text,價格懊纳、更新時間揉抵、還有區(qū)域是使用的查看結構的方式去獲取的,最后把他們封裝在字典中嗤疯,

data = {
'標題':title,
'價格':price[0].text,
'時間':data[0].text,
'所屬區(qū)域':list(area[0].stripped_strings) if soup.find_all('span','c_25d') else None,
'類型':'個人'if who_selit==0 else'商家',
'瀏覽次數(shù)':get_view_from(url)
}


??? 因為區(qū)域部分有些網頁中是沒有的冤今,所以使用了if作為條件判斷,如果沒有就返回控制None茂缚,幼兒畫就打印戏罢,至于類型部分有個if判斷是后期判斷抓取的數(shù)據(jù)是個人還是商家的列表所使用屋谭,這里沒什么關系。這段代碼寫完以后就是print打印一下內容了龟糕。

??? 抓取單網頁的內容就結束了桐磁,下面說一下返回到列表頁面去抓當前列表的所有內容。

urls=[]
list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_selit))
wb_data = requests.get(list_view)
soup = BeautifulSoup(wb_data.text,'lxml')
for link in soup.select('td.t > a.t'):
if str('jump') in str(link) or str('zhuanzhuan')in str(link):
pass
else:
urls.append(link.get('href').split('?')[0])
return urls


先說下代碼的步驟翩蘸,定義下urls變量為一個列表所意,然后定義一下list_view的內容,這里就是58額列表頁面催首,最后的方法.format(str(who_selit)),是替換一下內容扶踊,這個是比較簡單,who_selit變量就是要替換進去的內容郎任,然后就是解析網頁什么的秧耗,通過select查找網頁結構獲取想要的網址,寫個循環(huán)進去獲取每個商品的網址舶治,因為58里面有個轉轉界面分井,所以寫個if判斷下獲取的網址,如果是轉轉的就pass了霉猛,不是的話加入到urls這個變量中尺锚。

??? 由于瀏覽次數(shù)這個是JS控制的,并且和商品的URL是有一定關系的惜浅,這里我貼一下代碼瘫辩,這段代碼我只能看懂,如果讓我說個123還真說不出來坛悉。

id = url.split('/')[-1].strip('x.shtml')
api = 'http://jst1.58.com/counter?infoid={}'.format(id)
js = requests.get(api)
views = js.text.split('=')[-1]


到這里似乎就差不多了 封裝一下各個部分伐厌,然后做個完整的程序出來,下面貼一下完整的代碼

#-*-coding:utf-8-*-
from bs4 import BeautifulSoup
import requests
import time

def get_urls(who_selit=0):
urls=[]
list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_selit))
wb_data = requests.get(list_view)
soup = BeautifulSoup(wb_data.text,'lxml')
for link in soup.select('td.t > a.t'):
#剔除轉轉界面
if str('jump') in str(link) or str('zhuanzhuan')in str(link):
pass
else:
urls.append(link.get('href').split('?')[0])
return urls
#返回所有的商品界面

def get_view_from(url):
id = url.split('/')[-1].strip('x.shtml')
api = 'http://jst1.58.com/counter?infoid={}'.format(id)
js = requests.get(api)
#獲取一下瀏覽次數(shù)
views = js.text.split('=')[-1]
return views

def get_info(who_selit=0):
urls = get_urls(who_selit)
for url in urls:
wb_date = requests.get(url)
soup = BeautifulSoup(wb_date.text,'lxml')
title = soup.title.text
price = soup.select('#content span.price')
data = soup.select('.time')
area = soup.select('.c_25d')
data = {
'標題':title,
'價格':price[0].text,
'時間':data[0].text,
'所屬區(qū)域':list(area[0].stripped_strings) if soup.find_all('span','c_25d') else None,
'類型':'個人'if who_selit==0 else'商家',
'瀏覽次數(shù)':get_view_from(url)
}
time.sleep(0.5)
#延遲一下 避免58的反爬蟲
print(data)
#解析每個商品界面并且整理到字典中并且輸出

get_info()


以上代碼經過2016.05.06測試可以使用并且正確輸出

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末裸影,一起剝皮案震驚了整個濱河市挣轨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轩猩,老刑警劉巖卷扮,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異界轩,居然都是意外死亡画饥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門浊猾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抖甘,“玉大人,你說我怎么就攤上這事葫慎∠纬梗” “怎么了薇宠?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艰额。 經常有香客問我澄港,道長,這世上最難降的妖魔是什么柄沮? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任回梧,我火速辦了婚禮,結果婚禮上祖搓,老公的妹妹穿的比我還像新娘狱意。我一直安慰自己,他們只是感情好拯欧,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布详囤。 她就那樣靜靜地躺著,像睡著了一般镐作。 火紅的嫁衣襯著肌膚如雪藏姐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天该贾,我揣著相機與錄音羔杨,去河邊找鬼。 笑死杨蛋,一個胖子當著我的面吹牛问畅,可吹牛的內容都是我干的。 我是一名探鬼主播六荒,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矾端!你這毒婦竟也來了掏击?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤秩铆,失蹤者是張志新(化名)和其女友劉穎砚亭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體殴玛,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡捅膘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滚粟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寻仗。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凡壤,靈堂內的尸體忽然破棺而出署尤,到底是詐尸還是另有隱情耙替,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布曹体,位于F島的核電站俗扇,受9級特大地震影響,放射性物質發(fā)生泄漏箕别。R本人自食惡果不足惜铜幽,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望串稀。 院中可真熱鬧除抛,春花似錦、人聲如沸厨诸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽微酬。三九已至绘趋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颗管,已是汗流浹背陷遮。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垦江,地道東北人帽馋。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像比吭,于是被迫代替她去往敵國和親绽族。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容