请选择 进入手机版 | 继续访问电脑版
微信扫一扫 分享朋友圈

已有 954 人浏览分享

开启左侧

python爬取京东畅销书榜

[复制链接]
954 1
一个很好的练手项目。
一、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库。

[mw_shl_code=python,true]
#!/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()[/mw_shl_code]

程序输出, 榜单有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版的冗长多了。
(就你库多)


不积跬步,无以至千里

评论 1

japanphone  初级码农Ⅰ  发表于 2018-7-5 12:52:20 | 显示全部楼层
{:4_92:}{:4_92:}{:4_92:}{:4_92:}{:4_92:}{:4_92:}

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

37

粉丝

1150

主题
热门资讯
网友晒图
图文推荐
  • 联系我们
  • 邮箱:admin@c0ks.com(请把#改成@)
  • 电话:18530790808
  • QQ客服 1031180668
  • 工作时间:周一至周五(早上9点至下午5点)
  • 微信二维码

  • 扫描访问手机版

Archiver|手机版|小黑屋|从零开始

GMT+8, 2020-5-26 02:38 , Processed in 0.103316 second(s), 37 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

  • QQ: 1031180668

    客服电话

    18530790808

    电子邮件

    admin@c0ks.com

    在线时间:8:00-16:00