1. 程式人生 > >利用python爬蟲爬取京東商城商品圖片

利用python爬蟲爬取京東商城商品圖片

筆者曾經用python第三方庫requests來爬取京東商城的商品頁內容,經過解析之後發現只爬到了商品頁一半的圖片。(這篇文章我們以爬取智慧手機圖片為例)

當滑鼠沒有向下滑時,此時檢視原始碼的話,就會看到上圖的內容,只有三十個 li 標籤(一個li標籤中有一個圖片地址)。

但是滑鼠滑至底部後再檢視原始碼的話就會看到六十個 li 標籤,這才是我們真正需要爬取的內容。下圖是滑鼠滑至底部時的原始碼。

為什麼會出現這種原因呢?這是因為京東商城的商品資訊是通過動態載入的方式進行載入的,而這種頁面又被稱為動態頁面。要想爬取這種頁面就必須模擬瀏覽器的行為,和頁面進行互動。python第三方庫selenium恰好能做到這些,只需要將頁面滑至底部就行。

首先我們通過pip工具來安裝selenium庫:

pip install selenium

通過分析每個頁面的url連結,我找到了京東商品頁每個網頁的url的規律:

# search_p 是要查詢的商品名稱,page後面的值是按照,1,3,5,7,9......的規律遞增的,對應的網頁是第1頁,第2頁,第3頁......
url = "https://search.jd.com/Search?keyword=" + str(search_p) + "&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=" + \
         str(search_p) + "&page=" + str(index * 2 + 1)
 

接著來分析一下圖片的地址,通過分析我找到了兩種圖片連結格式:

一種是上圖所示的格式:

<img width="220" height="220" class="err-product" data-img="1" data-lazy-img="//img11.360buyimg.com/n7/jfs/t5530/246/208784477/340617/68b4fcac/58fad33aN05c25515.jpg">

還有一種是這種格式的:

<img width="220" height="220" class="err-product" data-img="1" src="//img14.360buyimg.com/n7/jfs/t4549/6/4532220459/272946/d0b72af9/59119ddbNd25bdd22.jpg">

確定圖片格式後,定義一個函式來解析網頁中的圖片地址,這裡我用BeautifulSoup4庫對其進行解析。

# 提取網頁的圖片的網址
def parse_html_page(html):

    # 對有效圖片網址進行提取
    soup = BeautifulSoup(html, 'lxml')
    # 定義一個列表來獲取分析得到的圖片的網址

    url_items = []
    li_tags = soup.find_all('li', 'gl-item')
    for li_tag in li_tags:
        try:
            if len(li_tag.img["src"]) >= 10:
                url_items.append(li_tag.img['src'])
            else:
                pass
        except:
            if len(li_tag.img["data-lazy-img"]) >= 10:
                url_items.append(li_tag.img['data-lazy-img'])
            else:
                url_items.append(li_tag.img["src"])

    return url_items

然後我們開始獲取網頁原始碼,前面已經提到,要想獲取到完整的網頁原始碼,就需要瀏覽器和網頁進行互動,即讓瀏覽器自動執行一個向下滑至網頁底部的動作,停頓幾秒,等待網頁載入完成(這一步必須有,否則獲得的網頁原始碼仍會不完整),待網頁載入完成之後就可以獲取網頁原始碼了。

這裡使用selenium來使瀏覽器自動執行向下滑動至網頁底部的動作:

# 執行頁面向下滑至底部的動作
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# 停頓5秒等待頁面載入完畢!!!(必須留有頁面載入的時間,否則獲得的原始碼會不完整。)
time.sleep(5)

網頁原始碼獲取成功之後,便可以用urlretrieve(url, filename=path)方法來定義下載函式。

最後總結一下這個爬蟲,有幾個方面需要注意:1,每個商品頁面對應的url。2,如何利用selenium + 瀏覽器來解決獲取動態頁面的原始碼的問題。3,如何完整提取每個商品頁中的60張圖片的url。


相關推薦

利用python爬蟲京東商城商品圖片

筆者曾經用python第三方庫requests來爬取京東商城的商品頁內容,經過解析之後發現只爬到了商品頁一半的圖片。(這篇文章我們以爬取智慧手機圖片為例)當滑鼠沒有向下滑時,此時檢視原始碼的話,就會看到上圖的內容,只有三十個 li 標籤(一個li標籤中有一個圖片地址)。但是滑

利用Python爬蟲京東商品的簡要資訊

一、前言   本文適合有一定Python基礎的同學學習Python爬蟲,無基礎請點選:慕課網——Python入門   申明:例項的主體框架來自於慕課網——Python開發簡單爬蟲   語言:Python2   IDE:VScode二、何為爬蟲   傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的UR

利用Python爬蟲淘寶商品做數據挖掘分析實戰篇,超詳細教程

實戰 趨勢 fat sts AI top 名稱 2萬 安裝模塊 項目內容 本案例選擇>> 商品類目:沙發; 數量:共100頁 4400個商品; 篩選條件:天貓、銷量從高到低、價格500元以上。 項目目的 1. 對商品標題進行文本分析 詞雲可視化 2.

python爬蟲京東店鋪商品價格資料(更新版)

主要使用的庫: requests:爬蟲請求並獲取原始碼 re:使用正則表示式提取資料 json:使用JSON提取資料 pandas:使用pandans儲存資料 ##sqlalchemy :備用方案,上傳資料到mysql 以下是原始碼: # -*- coding:utf

Python的網路爬蟲小系統——京東商城商品資訊

import time from selenium import webdriver keyword = input('請輸入你要搜尋的關鍵字:') brow = webdriver.Firefox() brow.get('http://www.jd.com') searc

Python 爬蟲 京東 商品評論 資料,並存入CSV檔案

利用閒暇時間寫了一個抓取京東商品評論資料的爬蟲。之前寫了抓取拉勾網資料的爬蟲,請 參考1,參考2。 我的開發環境是Windows + Anaconda3(Python 3.6),家用電腦沒安裝Linux(Linux下也是可以的)。 京東的評論資料是通過介面提供的,所以先找

利用Eclipse-Python簡單京東商城書籍資訊進行視覺化

【實驗目的】 熟悉從網上爬取資料到將資料進行視覺化的全部流程,通過例項瞭解並掌握每個過程。 瞭解爬蟲爬取資料的原理,並選擇一種語言程式設計,將資料獲取到資料庫。 熟練使用 eclipse 中 Java 語言操作資料庫資料。 瞭解 ECharts 中各種圖的特

利用python爬蟲圖片並且制作馬賽克拼圖

python爬蟲 splay ise 做事 c-c sea mage item -a   想在妹子生日送妹子一張用零食(或者食物類好看的圖片)拼成的馬賽克拼圖,因此探索了一番= =。   首先需要一個軟件來制作馬賽克拼圖,這裏使用Foto-Mosaik-Edda(網上也有在

Python,自己修改的去淘寶網頁的程式碼 解決Python爬蟲淘寶商品資訊也不報錯,也不輸出資訊

程式碼部分: 下面是正確的: import requests import re def getHTMLText(url): try: r = requests.get(url, timeout = 30) r.raise_for_stat

c# 爬蟲京東所有商品資訊

    在一個小專案中,需要用到京東的所有商品ID,因此就用c#寫了個簡單的爬蟲。     在解析HTML中沒有使用正則表示式,而是藉助開源專案HtmlAgilityPack解析HTML,找到需要的節點。 一、下載網頁HTML     首先我們寫一個公共方法用來下載網頁的HTML。     在寫下載HTML方

Python,自己修改的去淘寶網頁的程式碼 解決Python爬蟲淘寶商品資訊也不報錯,也不輸出資訊

程式碼部分: 下面是正確的: import requests import re def getHTMLText(url): try: r = requests.get(ur

scrapy框架京東商城商品的評論

一、Scrapy介紹 Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架。 可以應用在包括資料探勘,資訊處理或儲存歷史資料等一系列的程式中。 所謂網路爬蟲,就是一個在網上到處或定向抓取資料的程式,當然,這種說法不夠專業,更專業的描述就是,抓取特定網站網頁的H

京東商城商品信息

final finall pan __name__ cit spi web 爬取 webdriver from selenium import webdriver from selenium.webdriver import ActionChains from se

利用Python批量XKCD動漫圖片,並批量儲存

import requests, os, bs4 url = 'https://xkcd.com' os.makedirs('xkcd',exist_ok = True) while not url.endswith('#'): # download the page

Python爬蟲 網站上的圖片

                                 Python爬蟲  爬取網站上的圖片  

Python爬蟲——網頁中的圖片小試牛刀

Preface:以往爬取文字,這次需要爬取圖片pdf,先上手一個例子,爬取pdf,先取得url,然後通過urllib.urlretrieve函式將url的網頁內容遠端下載到本地,第一個引數為url,第二個引數為檔名(程式碼中有誤),第三個引數為回撥函式,可以顯示下載進度。另

python制作爬蟲京東商品評論教程

頭文件 天津 ref back 文字 eai 目的 格式 open 作者:藍鯨 類型:轉載 本文是繼前2篇Python爬蟲系列文章的後續篇,給大家介紹的是如何使用Python爬取京東商品評論信息的方法,並根據數據繪制成各種統計圖表,非常的細致,有需要的小夥伴可以參考下

用scrapy京東商城商品信息

keywords XML 1.5 rom toc ons lines open 3.6 軟件環境: 1 gevent (1.2.2) 2 greenlet (0.4.12) 3 lxml (4.1.1) 4 pymongo (3.6.0) 5 pyO

Java爬蟲京東商品信息

1.2 image 商品 void code 更改 size pri name 以下內容轉載於《https://www.cnblogs.com/zhuangbiing/p/9194994.html》,在此僅供學習借鑒只用。 Maven地址 <dependency>

scrapy京東商城某一類商品的資訊和評論(二)

2、任務二:爬取商品評論資訊 如果不需要爬取使用者的地域資訊,那麼用這個網址爬就好: http://club.jd.com/review/10321370917-1-1-0.html 其中10321370917是商品的ID,評論的第一頁就是 -1-1-0.htm