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.