Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍
admin
2023-07-06 22:23:44
0

来啦,老弟

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

我们已经知道怎么使用

Requests]

进行各种请求骚操作

也知道了对服务器返回的数据如何使用

正则表达式

来过滤我们想要的内容

...

那么接下来

我们就使用 requests 和 re 来写一个爬虫

作为一个爱看书的你(说的跟真的似的)

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

怎么能发现好书呢?

所以我们

爬取当当网的前 500 本好五星评书籍

怎么样?

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

ok

接下来就是

学习 python 的正确姿势

请在电脑的陪同下

边看本文边练习

首先我们要对我们的目标网站进行分析

先摸清对方的底

我们才能战无不胜

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

打开这个书籍排行榜的地址

http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-1

我们可以看到是这样的一个网页

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

每一页显示 20 本书

当我们点击下一页的时候

你可以发现地址变了

http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-2

也就是我们翻到第几页的时候

链接地址的最后一个参数会跟着变

那么我们等会在 python 中可以用一个变量

来实现获取不同页数的内容

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

接着

用我们之前说的 Chrome 骚操作

来分析一下

我们要的内容是怎么请求的

以及

返回给我们的源代码是什么样的

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

可以看到

我们通过 GET 请求

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

我们的请求头

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

这是服务器返回来的数据

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

接着我们再来分析一下我们要抓取的关键信息

Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

我们要的就是前 500 本书的

排名

书名

图片地址

作者

推荐指数

五星评分次数

价格

通过源码我们可以看到

这些信息被放在了

  • 标签中

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    那么我们等会就可以使用

    来进行过滤我们要的信息

    一顿分析完了之后

    接下来撸代码了

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    主要思路

    使用 page 变量来实现翻页

    我们使用 requests 请求当当网

    然后将返回的 HTML 进行正则解析

    由于我们暂时还没学到数据库

    所以解析完之后就把内容存到文件中。学习过程中有不懂的可以加入我们的学习交流秋秋圈784中间758后面214,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享

    def main(page):
       url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-' + str(page)
        html = request_dandan(url)
       items = parse_result(html) # 解析过滤我们想要的信息
    
       for item in items:
           write_item_to_file(item)
    

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    请求当当网

    当我们请求成功之后

    拿到源代码

    def request_dandan(url):
       try:
           response = requests.get(url)
           if response.status_code == 200:
               return response.text
       except requests.RequestException:
           return None
    

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    拿到源代码了

    就要对其解析

    使用正则表达式获取我们想要的关键信息

    获取到了之后我们封装一下数据

    def parse_result(html):
       pattern = re.compile('
  • .*?list_num.*?(\d+).
  • .*?.*?class="star">.*?class="tuijian">(.*?).*?class="publisher_info">.*?target="_blank">(.*?).*?class="biaosheng">.*?(.*?)
    .*?

    ¥(.*?).*?',re.S) items = re.findall(pattern,html) for item in items: yield { 'range': item[0], 'iamge': item[1], 'title': item[2], 'recommend': item[3], 'author': item[4], 'times': item[5], 'price': item[6] }

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    打印一下看看结果

    for item in items:
           print(item)
    

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    可以看到这样的数据

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    没毛病

    现在我们获取的是第 1 页的数据

    如何自动获取 25 页 500 条数据呢

    来个 for 循环呗

    if __name__ == "__main__":
       for i in range(1,26):
           main(i)
    

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    获取完 500 本书的数据之后

    存到 book.txt 文件

    def write_item_to_file(item):
       print('开始写入数据 ====> ' + str(item))
       with open('book.txt', 'a', encoding='UTF-8') as f:
           f.write(json.dumps(item, ensure_ascii=False) + '\n')
           f.close()
    

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    完成

    项目跑起来,学习过程中有不懂的可以加入我们的学习交流秋秋圈784中间758后面214,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    打开我们存储的 book.txt 看看

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    前 500 本书的数据就被我们拿到啦

    Python第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    相关内容

    热门资讯

    我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
    极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
    三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...
    原创 识... 还是那句话,机圈苦大屏久已…… 虽然大屏有大屏的美,但是小屏也有小屏的俏。在大屏旗舰占据主流的手机市...
    玄戒技术取得分频电路专利,实现... 国家知识产权局信息显示,北京玄戒技术有限公司取得一项名为“分频电路、分频器、射频芯片和电子设备”的专...
    为什么今年香会基调明显变了 5月29日—31日在新加坡举行的第23届香格里拉对话会(简称“香会”),见证着元首引领下大国关系继续...
    成本几毛钱、假驱蚊液香精兑水,... 入夏升温,蚊虫进入活跃期,驱蚊防护成为民生刚需,《财经调查》持续接到消费者投诉,他们买到的多款网红驱...
    越来越多80后90后,正在丧失... 六一儿童节到来之际,朋友圈里开始出现一种熟悉的热闹。有人晒出零食礼包,有人半开玩笑地向伴侣讨礼物,还...
    洋保电子取得用于低温环境的电气... 国家知识产权局信息显示,洋保电子(太仓)有限公司取得一项名为“一种用于低温环境的电气柜”的专利,授权...
    中日韩飞手争霸宁波!2026无... 潮新闻客户端 记者 陈冲 通讯员 朱凝 5月31日,2026小遛·无人机竞速世界杯(中国·宁波鄞州站...