1-4homework-2

結(jié)果


Result.png

我的代碼


#!/usr/bin/env python
#-*- coding: utf-8 -*-

__author__ = 'CP6'
import requests
import time
from bs4 import BeautifulSoup

urls = ['http://bj.58.com/pbdn/pn{}'.format(str(i)) for i in range(1, 10)]
headers = {
    'UserAgent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.21 Safari/537.36'
}

def get_info(url):
    wb_data = requests.get(url, headers=headers, timeout=6)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    time.sleep(3)
    # print(soup.title.text)
    titles = soup.select('body > div.content > div > div.box_left > div.info_lubotu.clearfix > div.box_left_top > h1')
    lookTimes = soup.select('body > div.content > div > div.box_left > div.info_lubotu.clearfix > div.box_left_top > p > span.look_time')
    prices = soup.select('body > div.content > div > div.box_left > div.info_lubotu.clearfix > div.info_massege.left > div.price_li > span > i')
    cates = soup.select('body > div.content > div > div.box_left > div.info_lubotu.clearfix > div.info_massege.left > div.biaoqian_li')
    areas = soup.select('body > div.content > div > div.box_left > div.info_lubotu.clearfix > div.info_massege.left > div.palce_li > span > i')
    for title,lookTime,price,cate,area in zip(titles,lookTimes,prices,cates,areas):
        data = {
            'title':title.get_text(),
            'lookTime':lookTime.get_text(),
            'price':price.get_text(),
            'cate':cate.text.replace('\n','').replace(' ',''),
            'area':area.get_text()
        }
        print(data)
    # with open('info.txt','wb') as fs:
    #     fs.write(wb_data.content)

def main():
    for single_url in urls:
        single_url = 'http://bj.58.com/pbdn/pn1'
        wb_data = requests.get(single_url, headers=headers, timeout=6)
        soup = BeautifulSoup(wb_data.text, 'lxml')
        links = soup.select('tr.zzinfo > td.img > a')
        for link in links:
            get_info(link.get('href'))

# 只有直接執(zhí)行腳本才會運(yùn)行下面的函數(shù),如果其他文件引用這個文件,下面的函數(shù)不會執(zhí)行
if __name__ == '__main__':
    main()

總結(jié)


  • **1.注釋 **

#!/usr/bin/env python
#-*- coding: utf-8 -*-

**第一行注釋是為了告訴Linux/OS X系統(tǒng),這是一個Python可執(zhí)行程序,Windows系統(tǒng)會忽略這個注釋;

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。**

  • 2. 由于網(wǎng)站的更新,所以我的本地的py腳本跟老師講得可能還是有所區(qū)別。而且發(fā)現(xiàn)自己的代碼還是有點(diǎn)很亂,還得鍛煉。**

其中

1.selector 及時可以足夠簡化,太冗長也影響代碼的可讀性,只要在網(wǎng)頁中檢查其標(biāo)簽唯一性即可。
prices = soup.select('.price')
areas = soup.select('.c_25d')
dates = soup.select('.time')
瀏覽次數(shù)
2.title屬性可以直接獲取,其實(shí)也就是網(wǎng)頁head里的標(biāo)簽,當(dāng)然這個的使用,其實(shí)還是有一定概率性,可能個別頁面的title跟你想要的會不一樣,需要仔細(xì)區(qū)分。
'title': soup.title.text,
3.不得不再次愛上py的語法,簡單,一行搞定,不過可讀性嘛,習(xí)慣就好了
.'price': prices[0].text if len(prices) > 0 else 0,

其實(shí)也就等價于:
if len(prices) > 0 :
  return prices[0].text
else :
  return 0

再看這個:

url_last_part = url_path.split('/')[-1]

[-1]這里的-1指的是,數(shù)組的倒數(shù)第一個,所以[-2],也就是倒數(shù)第2個,以此類推

這里其實(shí)也強(qiáng)調(diào)了對代碼邏輯中邊界問題的把控能力,你的代碼不僅僅要適用于正常情況,還是適用于極端情況。再看下面的邏輯保護(hù):

# 判斷狀態(tài)碼,檢查是否被網(wǎng)站封ip
 if wb_data.status_code != 200:
      continue
4.原來課程中比較難的一點(diǎn)就是,頁面中瀏覽量的爬取(現(xiàn)在這個問題沒有了,直接最簡單的爬取即可),是通過頁面中的js腳本來控制回寫到頁面(深刻感知js的爬取的天敵啊~),但是通過對source中的接口api進(jìn)行查詢(接口可以參照一下新浪微博接口的介紹,但現(xiàn)在已經(jīng)找不到了)回調(diào)處理邏輯的分析,還是可以強(qiáng)行獲取。

原本根據(jù)infoid是可以查詢到訪問量,也就是下圖totla后面的數(shù)字,現(xiàn)在已經(jīng)不需要了

api查詢

其實(shí)總結(jié)起來,也就是對于網(wǎng)頁鏈接中的網(wǎng)址變化特征要敏感,根據(jù)其不同的變化來猜測并驗(yàn)證猜測。

who_sells = 0 // 0為個人,1為商家
url = 'http://bj.58.com/pbdn/{}/pn2/'.format(who_sells)

// 訪問量的查詢也就是調(diào)用api后面,接上要查詢的id即可。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,701評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,816評論 18 139
  • 這里介紹三種方式: 1. 設(shè)置navigationBar的背景圖片時移除黑線的方法,該方法會使translucen...
    張無忌_閱讀 505評論 0 1
  • 每一座城市都有千千萬萬個面孔,我們能在那么多人中遇見一個人,無論友情,還是愛情。我想,都是應(yīng)該值得慶幸的事情...
    賣小妞的餅干閱讀 247評論 0 0
  • 關(guān)于高一·緘默 也豐富 偶爾寂寥 那是自己 最喜歡的生活狀態(tài) 關(guān)于高二·“那大概是我最努力最明...
    風(fēng)雨棲海閱讀 274評論 0 2