PYTHON實戰(zhàn)計劃第一周實戰(zhàn)作業(yè):爬取一頁商品數(shù)據(jù)

成果展示

Paste_Image.png

我的代碼

from bs4 import BeautifulSoup
import requests
import time


headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
        'Cookie': 'f=n; ipcity=sz%7C%u6DF1%u5733; myfeet_tooltip=end; f=n; id58=c5/nn1eG5BQ23S7cISNUAg==; bj58_id58s="aGJ0WERrMlAxWUFDMTgxMQ=="; sessionid=c780a61d-ec3b-4f40-bc4b-55a846bae0bd; f=n; als=0; bj58_new_session=0; bj58_init_refer=""; bj58_new_uv=1; 58tj_uuid=ebf8e987-94c8-4bbd-8f6a-e5920002849b; new_session=0; new_uv=1; utm_source=; spm=; init_refer='
        }

#獲取詳情頁鏈接函數(shù)
def get_urls(start=1,end=1):
    urls_list = ['http://bj.58.com/pbdn/0/pn{}/'.format(str(i)) for i in range(start, end+1)]  # 列表頁鏈接
    url_detail = []  #儲存詳情頁鏈接
    for single_list in urls_list:
        wb_data = requests.get(single_list, headers=headers)
        soup = BeautifulSoup(wb_data.text, 'lxml')
        urls = soup.select('tr > td.img > a')
        #print(urls)
        for url in urls:
            if 'jump.zhineng.58.com' not in url.get('href'):       #通過判斷鏈接中是否含有jump.zhineng.58.com,排除推廣商品
                url_detail.append(url.get('href'))  #將鏈接元素保存至列表
    return url_detail

#獲取詳情信息
def get_info(url,data=None):
    for each_url in url:
        wb_data = requests.get(each_url, headers=headers)
        #time.sleep(2)  #防止請求頻率過高,被網(wǎng)站反爬蟲,每兩秒請求一次
        soup = BeautifulSoup(wb_data.text, 'lxml')
        cates = []  # 儲存標(biāo)簽
        # print(soup)
        title = soup.select('h1')[0].get_text()
        classify = soup.find_all('span', 'crb_i')[-1].get_text(strip=True)  # 取的文本前有一行空白,使get_text方法中的參數(shù)strip=True,去掉空白
        price = soup.select('span.price_now > i')[0].get_text()
        area = soup.select('div.palce_li > span > i')[0].get_text()
        review = soup.select('div.box_left_top > p > span.look_time')[0].get_text()
        want_p = soup.select('div.box_left_top > p > span.want_person')[0].get_text()
        cate = soup.select('div.biaoqian_li')
        for item in cate:
            cates.append(list(item.stripped_strings))
        #print(title, classify, price, area, review, want_p, cates)
        data = {
            'title': title,
            'classify': classify,
            'price': price,
            'area': area,
            'review': review,
            'want_p': want_p,
            'cates': cates
        }

        print(data)

url=get_urls(1,10)
get_info(url)

總結(jié):

1.將第一周課程學(xué)的知識整合在一起,成功爬取了58轉(zhuǎn)轉(zhuǎn)的商品信息,加深了各種知識的理解;
2.要多寫代碼,多嘗試各種情況,不斷的踩坑,填坑,在解決的過程中,學(xué)到更多教程里沒涉及到的知識;

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

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

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