Java程序员的第一个Python小程序:京东畅销书榜爬虫
Posted bruce128
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序员的第一个Python小程序:京东畅销书榜爬虫相关的知识,希望对你有一定的参考价值。
毕业后的5年多时间里一直在Java的生态体系里游走,很少触碰其他非Java技术栈。职业安全感隐隐的警告我不能一直逗留在自己的舒适区里,不能被大时代抛弃。时下最火的莫过于AI, 而AI时代则带火了AI第一语言Python,那就学学Python。学习一门新技术的最佳方法是:learning by doing, 在实践中学习。我选择了爬虫作为自己的第一个练手小项目。爬虫的目标是京东的计算机与互联网图书销量榜。
一、html结构分析
链接请移步: http://book.jd.com/booktop/0-0-0.html?category=3287-0-0-0-5-1#comfort
图书的介绍信息都存在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小程序:京东畅销书榜爬虫的主要内容,如果未能解决你的问题,请参考以下文章