爬蟲小案例——爬取天貓


分析

天貓控制登錄字段:

  sort: 排序

  s:起始第幾個商品

  如:http://list.tmall.com/search_product.htm?s=60&q=Ůװ&sort=s 跳轉到登錄頁面

如果想正常訪問,刪除字段sort與s

  http://list.tmall.com/search_product.htm?q=男裝&totalPage=80&jumpto=3

  q :控制搜索

  totalPage: 總頁數

  jumpto : 跳轉到第幾頁

 

獲取商品信息分析

 

代碼實現

keyword = input('請輸入要爬取的商品:')

params = {
    'totalPage': 1,
    'jumpto': 1,
    'q': keyword

}

url = 'http://list.tmall.com/search_product.htm?'


from requests_html import HTMLSession

session = HTMLSession()


# r = session.get(url=url, params=params)
#
# totalPage = int(r.html.find('[name="totalPage"]', first=True).attrs.get('value'))   # 獲取總頁數
# params['totalPage'] = totalPage   # 更新總頁數
#
# # 拼出所有的url
# for i in range(1, totalPage+1):
#     params['jumpto'] = i
#     r = session.get(url=url, params=params)
#     print(r.url)


def get_totalPage(params, url):

    r = session.get(url=url, params=params)

    totalPage = int(r.html.find('[name="totalPage"]', first=True).attrs.get('value'))  # 獲取總頁數
    params['totalPage'] = totalPage  # 更新總頁數


def get_params(params, totalPage):
    for i in range(1, totalPage + 1):
        params['jumpto'] = i
        yield params


def get_product_info(params, url):
    r = session.get(url=url, params=params)
    # print(r.url)   # 每一頁的url
    product_element_list = r.html.find('.product')
    for product_element in product_element_list:
        product_img_url = product_element.find('img', first=True).attrs.get('src')
        product_detail_url = product_element.find('a', first=True).attrs.get('href')
        product_price = product_element.find('em', first=True).attrs.get('title')
        product_title = product_element.find('[class=productTitle] a', first=True).attrs.get('title')
        product_shopper = product_element.find('[class=productShop] a', first=True).text
        product_shopper_url = product_element.find('[class=productShop] a', first=True).attrs.get('href')
        product_sell = product_element.find('[class=productStatus] em', first=True).text
        product_comment_num = product_element.find('[class=productStatus] a', first=True).text
        product_comment_url = product_element.find('[class=productStatus] a', first=True).attrs.get('href')

        print(product_img_url)        # 商品圖片url
        print(product_detail_url)     # 商品詳情url
        print(product_price)          # 商品價格
        print(product_title)          # 商品標題
        print(product_shopper)        # 商家
        print(product_shopper_url)    # 商家url 
        print(product_sell)           # 賣出數
        print(product_comment_num)    # 評論數
        print(product_comment_url)    # 評論數url
 

get_totalPage(params, url)
for params in get_params(params, params['totalPage']):
    try:
        get_product_info(params, url)
    except:
        pass

 

打印結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM