Python實戰(zhàn)課程第一周第9課:第一周大作業(yè)-提取58同城出售電腦的所有信息

本周最后一節(jié)課了猾愿,這大作業(yè)比較綜合,要在頁面上提取網(wǎng)址账阻,然后根據(jù)提取到的網(wǎng)址蒂秘,進行解析,提取每個網(wǎng)址上面的有效信息淘太,例如標題姻僧、時間规丽、地址、價格撇贺、瀏覽量等赌莺。

難點主要有:

  1. 要提取個人用戶發(fā)布的信息,而非商家的松嘶。
  2. 瀏覽量由js控制雄嚣,要找到js的網(wǎng)址才行。
  3. 有些頁面沒有地址信息喘蟆,這會導致程序運行中斷缓升。

我的成果

成果.png

我的代碼

from bs4 import BeautifulSoup
import requests,time

def get_links_from(who_sells=0):
    urls = []
    list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_sells))
    wb_data = requests.get(list_view)
    soup=BeautifulSoup(wb_data.text,'lxml')
    for link in soup.select('td.t a.t'):
        urls.append(link.get('href').split('?')[0])
    return urls
    #print(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)
    views = js.text.split('=')[-1]
    return views

def get_item_info(who_sells=0):
    urls = get_links_from(who_sells)
    for url in urls:
        wb_data = requests.get(url)
        soup = BeautifulSoup(wb_data.text,'lxml')
        data = {
            "title":soup.title.text,
            "price": soup.select('div.price_li > span > i')[0].text,
            'area': list(soup.select('div.palce_li > span > i')[0].stripped_strings),
            "cata": '個人' if who_sells == 0 else '商家',
            'views': soup.select('span.look_time')[0].text

        }
        print(data)

#get_links_from()
get_item_info()

我的總結(jié)

  1. 關(guān)于提取個人賣家信息,需要觀察網(wǎng)站蕴轨,以及尋找合適的標簽港谊。

    Paste_Image.png

    點擊上圖的入口,然后觀察網(wǎng)址的變化橙弱,可以看到“1”是代表商家歧寺,“0”是代表個人賣家。
    list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_sells))

  2. 由js控制的瀏覽量應該怎么弄呢棘脐?(因為后來網(wǎng)站更新斜筐,瀏覽量不再由js控制了,所以提取更簡單了)蛀缝。

    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)
        views = js.text.split('=')[-1]
        return views
        
    

    必須找到js控制的網(wǎng)址顷链,然后比對和原來網(wǎng)址的聯(lián)系,根據(jù)這種比對屈梁,就能實現(xiàn)從原網(wǎng)址到js網(wǎng)址的轉(zhuǎn)換嗤练。當然有兩個函數(shù)必不可少,分別是splitstrip在讶,split表示從某個標識分割網(wǎng)址煞抬,而strip則表示去掉某個部分。通過這種剪切构哺,就能轉(zhuǎn)到js網(wǎng)址了革答。

  3. 如果想要網(wǎng)址的標題,可以直接使用網(wǎng)址中head部分曙强。

    "title":soup.title.text

    這就表示直接提取head中的標題残拐。

  4. 可以直接尋找class部分,來指定地址旗扑。

    'views': soup.select('span.look_time')[0].text

    例如上面的語句蹦骑,直接在審查部分搜索span.look_time,發(fā)現(xiàn)這個部分是唯一的臀防,即可定位眠菇。隔了幾行的class樣式之間边败,不用 > 符號,直接空格表示即可捎废。

    另外笑窜,class樣式中出現(xiàn)的 # 號,表示 id 的意思登疗。想幾個段落一起縮進的話排截,可以選擇語句后,直接按 Tab鍵辐益。
    樣式標簽前方的 . 代表的是class的意思断傲。

  5. 最后,在語句中也可以實現(xiàn)條件選擇智政。

    "cata": '個人' if who_sells == 0 else '商家'

    用簡單的 if ...... else ..... 語句即可實現(xiàn)认罩。

    當網(wǎng)頁運行時,由于某個網(wǎng)頁沒有某些元素而導致錯誤時怎么辦续捂?

else none.png

用 if ...... else None 垦垂。如果在網(wǎng)頁里面不能find_all這些元素的話,就直接會顯示為None.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牙瓢,一起剝皮案震驚了整個濱河市劫拗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矾克,老刑警劉巖页慷,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異聂渊,居然都是意外死亡差购,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門汉嗽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人找蜜,你說我怎么就攤上這事饼暑。” “怎么了洗做?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵弓叛,是天一觀的道長。 經(jīng)常有香客問我诚纸,道長撰筷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任畦徘,我火速辦了婚禮毕籽,結(jié)果婚禮上抬闯,老公的妹妹穿的比我還像新娘。我一直安慰自己关筒,他們只是感情好溶握,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蒸播。 她就那樣靜靜地躺著睡榆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袍榆。 梳的紋絲不亂的頭發(fā)上胀屿,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天碉纳,我揣著相機與錄音,去河邊找鬼馏艾。 笑死劳曹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的琅摩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼房资,長吁一口氣:“原來是場噩夢啊……” “哼蜕劝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起轰异,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤岖沛,失蹤者是張志新(化名)和其女友劉穎搭独,沒想到半個月后唉俗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡衡楞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年敦姻,在試婚紗的時候發(fā)現(xiàn)自己被綠了得滤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懂更。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖急膀,靈堂內(nèi)的尸體忽然破棺而出沮协,到底是詐尸還是另有隱情,我是刑警寧澤卓嫂,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布慷暂,位于F島的核電站,受9級特大地震影響晨雳,放射性物質(zhì)發(fā)生泄漏行瑞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一餐禁、第九天 我趴在偏房一處隱蔽的房頂上張望血久。 院中可真熱鬧,春花似錦帮非、人聲如沸氧吐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筑舅。三九已至,卻和暖如春陨舱,著一層夾襖步出監(jiān)牢的瞬間翠拣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工隅忿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留心剥,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓背桐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝉揍。 傳聞我的和親對象是個殘疾皇子链峭,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 經(jīng)朋友介紹,認識到了python實戰(zhàn):四周實習爬蟲系統(tǒng)又沾,然后看了一下試看教程弊仪,覺得課程挺不錯的熙卡,→_→重點是對于...
    隱逆閱讀 751評論 0 50
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法励饵,內(nèi)部類的語法驳癌,繼承相關(guān)的語法,異常的語法役听,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理颓鲜,服務發(fā)現(xiàn),斷路器典予,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 雨水的記憶 被皮鞋的質(zhì)量擦淡 晴天的閃電不時劃破夜空 那幾年 甘谷麥子收了就種豆 渠里沒水 天上一碧如洗 地里一镢...
    清水濯足閱讀 194評論 0 1
  • uu07閱讀 133評論 0 2