爬虫百战(一):爬取当当网Top500本五星好评书籍 |
您所在的位置:网站首页 › 大学计算机书籍排行榜 › 爬虫百战(一):爬取当当网Top500本五星好评书籍 |
爬取当当网Top500本五星好评书籍
==实战前提:==准备工作撸代码
成果展示
实战前提:
掌握requests库的使用
熟悉re库,正则表达式的简单使用
可参考我的另外两篇博客进行学习
准备工作
1.打开当当网书籍排行榜的网址: 五星图书排行榜 打开之后可以看到: 可以发现: 每一页显示二十本书点击下一页发现地址发生改变: 第二页 http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-2我们可以在python中设置一个变量里来实现获取不同页数的内容 2.分析网页的请求和响应操作 鼠标右键点击检查或按F12,进入以下页面: 我们可以看到我们的请求头,还可以看到服务器返回来的数据: 3.分析我们将要抓取的关键信息 我们要的就是前500本书的 排名 书名 图片地址 作者 推荐指数 五星评分次数 价格 通过源码我们可以看到这些信息都被放在 标签中: 撸代码思路: 1.使用page进行翻页操作 2.使用requests请求当当网 3.将返回的HTML源码进行解析 4.将解析完的数据保存到csv格式的文件中,方便进行后续数据分析 源码: #-*- coding = utf-8 -*- #@Time : ****/*/* **:** #@Author : shy-2 #@File : 获取当当网五星图书排行榜Top500.py #@Software : PyCharm import requests import re import json #请求当当网 获取源代码 def request_dangdang(url): try: response = requests.get(url) if response.status_code == 200: return response.text except requests.RequestException: return None #解析源代碼 def parse_response(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: #打印一下 查看結果 print(item) yield { 'range': item[0], 'image': item[1], 'title': item[2], 'recommand': item[3], 'author': item[4], 'times': item[5], 'price': item[6] } #写入文件 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() #主函数 def main(page): url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-'+str(page) html = request_dangdang(url) items = parse_response(html) for item in items: write_item_to_file(item) #实现翻页 if __name__=="__main__": for i in range(1,26): main(i) 成果展示 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |