python四周實(shí)戰(zhàn)1.03——爬取網(wǎng)頁(yè)

這次爬取網(wǎng)頁(yè)花的時(shí)間比自己預(yù)期的長(zhǎng)了很多,回想了一下,主要的問(wèn)題在于:

  1. 在獲取列表頁(yè)那里消耗了很多時(shí)間,最后發(fā)現(xiàn)是錯(cuò)誤的方向。只需要獲取列表頁(yè)就行了,而不是一步到位,遍歷了列表頁(yè)還一起把詳情頁(yè)的鏈接給得到了。這里應(yīng)該分開的。
  2. 寫程序是一個(gè)結(jié)構(gòu)化很強(qiáng)的思考過(guò)程。在開始前應(yīng)該有一個(gè)大概的構(gòu)思,當(dāng)然也可以改,但是有個(gè)流程圖的話會(huì)思路清晰很多。
  3. 另一個(gè)是爬取圖片那里,一直爬取的都是none,以為是網(wǎng)站反爬取了,還切換手機(jī)版,發(fā)現(xiàn)網(wǎng)址還不一樣,霎時(shí)傻了。后來(lái)發(fā)現(xiàn)原來(lái)是因?yàn)樵凇皺z查”時(shí)選擇的對(duì)象是加載在圖片上面的左右箭頭,而不是圖片,這樣獲取其src屬性肯定是空 的。還是得更細(xì)心才行,這些都得好好留意對(duì)不對(duì)的,并不是有個(gè)鏈接就是圖片。
  4. 判斷性別那里自己寫的不好,對(duì)比一下,發(fā)現(xiàn)可以直接選擇class的,有想過(guò)選class參數(shù)的,用get方法就可以了,但是沒想到。。。另外,自己選擇的if…else結(jié)構(gòu)并不合理,因?yàn)橛形催x擇性別的,而在爬取時(shí)就變成了男性,像答案的用上elseif就很好了。
def get_lorder_sex(class_name):
    if class_name == ['member_boy_ico']:
        return '男'
    elif class_name == ['member_girl_ico']:
        return '女'
"sex": get_lorder_sex(sex.get("class"))

代碼:

from bs4 import BeautifulSoup
import requests

urls=("http://bj.xiaozhu.com/search-duanzufang-p{}-0/".format(str(i)) for i in range(1,13))

def get_link(url):
    wb_data=requests.get(url)
    soup=BeautifulSoup(wb_data.text,'lxml')
    links=soup.select('#page_list > ul > li > a')
    for link in links:
        href=link.get('href')
        get_detail_info(href)

def get_detail_info(url,data=None):
    wb_data =requests.get(url)
    soup = BeautifulSoup(wb_data.text,'lxml')

    titles=soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4')
    adds  =soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span')
    prices=soup.select('#pricePart > div.day_l > span')
    imgs  =soup.select('#curBigImage')
    owners=soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img')
    males =soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div.member_ico1')
    names =soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')
    if males != []:
        members = '女'
    else:
        members = '男'

    for title,add,price,img,owner,member,name in zip(titles,adds,prices,imgs,owners,members,names):
        data = {
            'title':title.get_text(),
            'add'  :add.get_text(),
            'price':price.get_text(),
            'img'  :img.get('src'),
            'owner':owner.get('src'),
            'member':str(members),
            'name' :name.get_text(),
        }
        print(data)

for single_url in urls:
     get_link(single_url)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Date:2016-9-21update:2016-9-30By:Black Crow 前言: 終于進(jìn)入到網(wǎng)絡(luò)頁(yè)面...
    black_crow閱讀 1,402評(píng)論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 白人:腸道比中國(guó)人短 左邊是玉米餅,60%的玉米 脂肪:體積最小,熱量最高,儲(chǔ)存無(wú)限量,危害無(wú)限大 蔬菜是營(yíng)養(yǎng)密度...
    Iaml閱讀 686評(píng)論 0 0
  • 今天,距去年9.11,不足9個(gè)月。 朵朵兒又住進(jìn)了醫(yī)院,高熱,驚厥。記得她哥小時(shí)候也是連續(xù)兩年犯。盡管...
    小葉榕閱讀 378評(píng)論 0 0
  • 逢年過(guò)節(jié)時(shí)時(shí)好,心心相印綠如草。 人人相惜節(jié)節(jié)高,天下一笑揚(yáng)海耀。
    亂花漸欲迷人眼閱讀 274評(píng)論 0 0

友情鏈接更多精彩內(nèi)容