背景
之前单位新建了一个小图书馆,然后就有了这么一个需求,需要设置一下图书的分类与目录。要怎么定义呢,当然是百度咯。然后想到了卖书发家的当当网,打算把当当网上的所有图书分类全部抓下来提供给行政来作参考。
思路
打开当当网的图书页面http://book.dangdang.com/,图书分类就在网页的左边,开启F12看源代码。
多看看就看出来规律了,关注红框部分。所有的分类其实都在<a>
标签里,其中的href
属性里的网址很有规律,去掉前面的域名之后,都以cp + 数字来命名,其中数字与数字之间用.
来分割,代表一级目录和二级目录。
所以大体思路就是通过正则表达式先抓取href
属性中含有cp
开头的元素,然后找出所有第一节数字不同的元素,获取其text属性来当一级目录,然后把域名+cp+一级目录序号
当做固定前缀来找对应的二级目录。
要注意就是去重还有一些删除一些网址不符合这个过滤的,以及所有的text
记得用strip()
来删除一下多余的空格和换行符号。
具体实现
按上面的思路,主要用requests bs4
就差不多了,详细代码就参考github吧,https://github.com/keejo125/ 有更好的方法的也欢迎分享。