1. 程式人生 > >Java程式設計師的第一個Python小程式:京東暢銷書榜爬蟲

Java程式設計師的第一個Python小程式:京東暢銷書榜爬蟲

畢業後的5年多時間裡一直在Java的生態體系裡遊走,很少觸碰其他非Java技術棧。職業安全感隱隱的警告我不能一直逗留在自己的舒適區裡,不能被大時代拋棄。時下最火的莫過於AI, 而AI時代則帶火了AI第一語言Python,那就學學Python。學習一門新技術的最佳方法是:learning by doing, 在實踐中學習。我選擇了爬蟲作為自己的第一個練手小專案。爬蟲的目標是京東的計算機與網際網路圖書銷量榜
這裡寫圖片描述

一、html結構分析

這裡寫圖片描述
圖書的介紹資訊都存在class為p-detail的div模組裡, 一個這樣的div裡儲存著一本書的完備資訊。圖書的購買連結,書名都在這個div下的a標籤裡。這樣,拿到這個a標籤就能找到我要的資訊了

二、如何找下一個頁面的url

這裡寫圖片描述
點開“下一頁”這個按鈕的html資訊,a標籤裡的href就是下一個頁面的url。so easy。爬蟲挖掘url的策略無外乎寬度優先搜尋(BFS)和深度優先搜尋(DFS)。而我則採取了深搜。

三、程式碼實現

怎麼解析頁面的內容,如何找下一個頁面,解決這兩個問題就可以寫爬蟲程式碼了。

開發中需要用到的重要的python庫:
1. html內容解析, 使用BeautifulSoup庫, Beautiful Soup庫中文文件。 這個庫相當於Java裡的Jsoup庫。
2. 網頁下載,使用requests庫。功能類似Java的httpclient庫。

#!/usr/bin/env python
# encoding=utf-8

import requests
from bs4 import BeautifulSoup
from requests import HTTPError

HTTP_ = 'http:'


def download_page(url):
    print(url)
    try:
        data = requests.get(url).content
    except HTTPError as err:
        print(err.__traceback__)
    except ConnectionError as
err: print(err.__traceback__) except TimeoutError as err: print(err.__traceback__) return data def parse_html(html): soup = BeautifulSoup(html, "html.parser") book_list_soup = soup.find_all('div', attrs={'class': 'p-detail'}) for book_li in book_list_soup: a_tag = book_li.find('a', attrs={'class': 'p-name'}) print('書名 : ' + a_tag['title'] + '\t連結 : ' + HTTP_ + a_tag['href']) next_button = soup.find('a', attrs={'class': 'pn-next'}) return next_button['href'] def main(): download_url = '//book.jd.com/booktop/0-0-0.html?category=3287-0-0-0-5-1#comfort' while download_url != 'javascript:void(0);': html = download_page(HTTP_ + download_url) download_url = parse_html(html) if __name__ == '__main__': main()

程式輸出, 榜單有100個,這裡只貼出前20個

書名 : Python程式設計 從入門到實踐    連結 : http://item.jd.com/11993134.html
書名 : 機器學習【首屆京東文學獎-年度新銳入圍作品】     連結 : http://item.jd.com/11867803.html
書名 : 數學之美(第二版)  連結 : http://item.jd.com/11572052.html
書名 : 深度學習   連結 : http://item.jd.com/12128543.html
書名 : Word Excel PPT 2016辦公應用從入門到精通(附光碟) 連結 : http://item.jd.com/11988251.html
書名 : 鳥哥的Linux私房菜 (基礎學習篇 第三版)    連結 : http://item.jd.com/10064429.html
書名 : Python基礎教程(第3版)    連結 : http://item.jd.com/12279949.html
書名 : Python核心程式設計(第3版)    連結 : http://item.jd.com/11936238.html
書名 : Java從入門到精通(第4版 附光碟)    連結 : http://item.jd.com/11985075.html
書名 : 深入理解Java虛擬機器:JVM高階特性與最佳實踐(第2版)  連結 : http://item.jd.com/11252778.html
書名 : TensorFlow:實戰Google深度學習框架(第2版) 連結 : http://item.jd.com/12287533.html
書名 : Java程式設計思想(第4版)  連結 : http://item.jd.com/10058164.html
書名 : Python零基礎入門學習-水木書薈 連結 : http://item.jd.com/12004711.html
書名 : C Primer Plus 第6版 中文版  連結 : http://item.jd.com/11917487.html
書名 : 演算法導論(原書第3版)/電腦科學叢書    連結 : http://item.jd.com/11144230.html
書名 : Python 3網路爬蟲開發實戰   連結 : http://item.jd.com/12333540.html
書名 : 高效能MySQL(第3版)  連結 : http://item.jd.com/11220393.html
書名 : 浪潮之巔 第三版 套裝上下冊     連結 : http://item.jd.com/11922453.html
書名 : 利用Python進行資料分析 連結 : http://item.jd.com/11352441.html
書名 : Excel高效辦公:資料處理與分析(修訂版)(附CD光碟1張)    連結 : http://item.jd.com/11042690.html
......

python言簡意賅,一行頂Java10行。以前用Java實現過crawler,程式碼比python版的冗長多了。

相關推薦

Java程式設計師一個Python程式京東暢銷書爬蟲

畢業後的5年多時間裡一直在Java的生態體系裡遊走,很少觸碰其他非Java技術棧。職業安全感隱隱的警告我不能一直逗留在自己的舒適區裡,不能被大時代拋棄。時下最火的莫過於AI, 而AI時代則帶火了AI第一語言Python,那就學學Python。學習一門新技術的最佳

一個python程式——即時動態時鐘(程式碼解讀)

程式碼資源來自: http://n.miaopai.com/media/K9Qlou7rdPc5TxpPaL1VDvwfv5hP~lHK   (執行有錯誤,缺少date,week和結尾部分) https://blog.csdn.net/yangxing2/article/details

我的一個Python程式

大家好,我一個月前剛開始學Python,前幾天剛完成一個小遊戲,這遊戲使用了4個模組。 1- PyQt5 (需要下載) 2- random (Python自帶) 3- sys (Python 自帶) 4- texttable (需要下載) 首先,玩家一開始時會有10積分,

一個Python程式(Hello World!)

當安裝好python時,可以在命令提示符中直接輸入 python 就可以進入python自帶的編輯器(最好不要使用root使用者,因為當你不小心把資料給刪了,那可不是一般罪過啊!),如圖: 此

一個python 程式

第一個python程式,hello world 使用sublime 文字編輯器,首先需要下載python 推薦幾個sublime 的外掛 SublimeREPL、Anaconda print('hello world')

day04 一個python程式

使用Pycharm編寫第一個python程式1. 開啟 Pycharm,選擇  Create New Project  ,建立一個新專案2. 選擇 Pure Python  表示建立一個純Python程式專案,  Location  表示該專案儲存的路徑, Interpret

Python入門》一個Python Web程式——簡單的Web伺服器

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pycharm+Django搭建一個Python Web程式

1.安裝django 無論是Python2.x還是Python3.x版本,都可以使用pip來安裝Django。在控制檯使用如下命令:pip install django 如: 2.檢查dgango是否安裝成功 安裝成功後,在ipython裡面或者Pycharm的Python console控制檯匯入d

一個springMVC程式

1.開發工具介紹 idea的安裝破解:https://www.cnblogs.com/jpfss/p/8872358.html jdk和Tomcat的配置都在裡面。 2.建立第一個小程式 2.1建立一個web專案 2.2建立大綱 2.3在web/WEB-IN

【2】Kotlin是什麼 Kotlin的發展歷程 一個HelloWorld程式

Kotlin 就是一門可以執行在Java虛擬機器 ,Android ,瀏覽器上的靜態語言 它與Java 100%相容 如果你對Java非常熟悉,那麼你就會發現Kitlin除了自己的標準庫之外,大多數

Python入門 一個Python Web程式——簡單的Web伺服器

  上一篇講了《Python入門》Windows 7下Python Web開發環境搭建筆記,接下來講一下Python語言Web服務的具體實現:第一個Python Web程式——簡單的Web伺服器。 與其它Web後端語言不同,Python語言需要自己編寫Web伺服器。 如果你使用一

一個javaWeb程式設計師一個桌面應用的總結

CSDN的部落格編輯器太讓人受不了,原本好好的格式排版,粘上去全亂套了,怎麼調怎麼亂,今天試試Markdown,如果效果不錯,今後的部落格都用Markdown寫 最近專案要求我做一個工具 要求: 做一個工具,要能儲存系統地址、使用者名稱、密碼,實

一個Applet程式

.java 檔案: java applet是一個類,其層次結構如下圖:類 JApplet  java.lang.Object    java.awt.Component        java.awt.Container            java.awt.Panel 

使用PyQt來編寫一個Python GUI程式

這段程式碼有什麼用?還記得我們把按鈕命名為了calc_tax_button 嗎?(這是這個按鈕物件的名字,不是按鈕上顯示的提示字串。)clicked 是一個內建的函式,當有按鈕被點選的時候它會被自動呼叫(很神奇吧)。所有的 QT 元件都有特定的函式,你可以通過 Google 來檢視詳細。這段程式碼的最後部

如何用eclipse建立你的一個servlet程式

在文章開始,先寫一下get與post提交方式的區別: 例如,一張表單<form name = "regForm" action = "動作" method = "提交方式"> ... </form> 表單的提交方式一般有兩種,分別是get方法和pos

實現Servlet介面建立一個Servlet程式

Servlet概述: I.什麼是Servlet Servlet是JavaWeb的三大元件之一,它屬於動態資源。Servlet的作用是處理請求,伺服器會把接收到的請求交給Servlet來處理,通常被叫做伺服器端小程式。在Servlet中通常需要:

Qt creator一個Qt5程式顯示帶背景顏色或圖片的QWidget的Hello World視窗

用“qt-opensource-linux-x64-5.3.0.run”版本,安裝步驟,該版本已經集成了QtCreator,在Tools目錄下: [email protected]:/opt/Qt5.3.0$ ls 5.3 components.xml Do

我的一個Activiti程式

第二步:編寫一個spring格式的activiti.cfg.xml的配置檔案(這個配置檔案我放在了src目錄下面,如果放在其他目錄下面需要在程式中新增完整的路徑資訊)我用的是mysql資料庫。<?xml version="1.0" encoding="UTF-8"?> <beans xmln

自己的一個C++程式

#include "stdafx.h" #include <iostream> #include <string> int main() {std::cout << "請輸入姓名" << std::endl;std::str

C一個helloword程式

雙擊開啟Visual Studio  2013軟體,如下圖所示,開啟之後,映入眼簾的首先是Start Page頁面,建議大家儘量用英文版,依次點選File-New-Project,選擇Win32,Win32 Console Application.