当前位置:   article > 正文

Python爬虫 离线爬取当当网畅销书Top500的图书信息_爬虫获取当当网近七日新书热卖前100图书信息

爬虫获取当当网近七日新书热卖前100图书信息

本实例还有另外的在线爬虫实现,有兴趣可点击在线爬取当当网畅销书Top500的图书信息

爬虫说明

1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法)
2.爬虫分类为两种,一种是在线爬虫,即在网站中一边打开网页一边进行爬取;第二种是本实例使用的离线爬虫,即先将所爬取的网页保存到本地,再从本地网页中爬取信息
3.离线爬虫的优点是:可以方便爬虫的调试修改,且一次保存,可以多次爬取,不必担心网络资源,网络速度以及是否被网站监测.
4.离线爬虫的缺点是:需要先进行网页的保存,如果爬取的网页比较多,那么需要保存到本地占用的空间就越大,而且文档还涉及到许多不必要的信息,浪费空间.其次是爬取链问题,如果需要在当前网页中爬取另一个网页(超链接),那么该网页也需要保存,并且需要指定存放的位置.最后是编码的问题,涉及了网页的编码,文件的读取保存编码的统一,这里可能会遇到一些编码问题需要处理.

爬虫介绍

本次爬虫爬取的网页为:
图书畅销榜-10月畅销书排行榜-当当畅销图书排行榜
爬取的信息包括图书的排名,书名,作者,好评率,购买页面以及ISBN
如图:
在这里插入图片描述
其中,ISBN需要在购买页面链接中继续爬取,找到ISBN
在这里插入图片描述
爬取之后的结果整理好存放到csv文件中.
最终成果如图:
在这里插入图片描述

爬虫代码

观察需要爬取的第一页和最后一页:
http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-month-2018-10-1-1
http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-month-2018-10-1-25
发现只有最后一个数字改了,且每页显示20本图书,所以25*20=500,搞定.
这里自己了一个spider.py,里面写了两个小函数,一个用于返回网站的编码格式,一个用来存放网页到本地(实现离线爬虫)

import requests
import re

def get_encoding(url, headers=None):  # 一般每个网站自己的网页编码都是一致的,所以只需要搜索一次主页确定
    'To get website\'s encoding from tag<meta content=\'charset=\'UTF-8\'>'#从<meta>标签中获取
    res = requests.get(url, headers=headers)
    charset = re.search("charset=(.*?)>", res.text)
    if charset is not None:
        blocked = ['\'', ' ', '\"', '/']
        filter = [c for c in charset.group(1) if c not in blocked]
        return ''.join(filter)  # 修改res编码格式为源网页的格式,防止出现乱码
    else:
        return res.encoding  # 没有找到编码格式,返回res的默认编码


def savepage(response
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/825067
推荐阅读
相关标签
  

闽ICP备14008679号