来啦,老弟
我们已经知道怎么使用
python爬虫04 | 长江后浪推前浪,Requests库urllib库拍在沙滩上
进行各种请求骚操作
也知道了对服务器返回的数据如何使用
python爬虫05 | 年轻人,不会正则表达式你睡得着?有点出息没有
来过滤我们想要的内容
...
那么接下来
我们就使用 requests 和 re 来写一个爬虫
作为一个爱看书的你(说的跟真的似的)
怎么能发现好书呢?
所以我们
爬取当当网的前 500 本好五星评书籍
怎么样?
ok
接下来就是
学习 python 的正确姿势
请在电脑的陪同下
边看本文边练习
首先我们要对我们的目标网站进行分析
先摸清对方的底
我们才能战无不胜
打开这个书籍排行榜的地址
http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-1
我们可以看到是这样的一个网页
每一页显示 20 本书
当我们点击下一页的时候
你可以发现地址变了
http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-2
也就是我们翻到第几页的时候
链接地址的最后一个参数会跟着变
那么我们等会在 python 中可以用一个变量
来实现获取不同页数的内容
接着
用我们之前说的python爬虫入门01:教你在 Chrome 浏览器轻松抓包 骚操作
来分析一下
我们要的内容是怎么请求的
以及
返回给我们的源代码是什么样的
可以看到
我们通过 GET 请求
我们的请求头
这是服务器返回来的数据
接着我们再来分析一下我们要抓取的关键信息
我们要的就是前 500 本书的
排名
书名
图片地址
作者
推荐指数
五星评分次数
价格
通过源码我们可以看到
这些信息被放在了
标签中那么我们等会就可以使用
python爬虫05 | 年轻人,不会正则表达式你睡得着?有点出息没有
来进行过滤我们要的信息
一顿分析完了之后
接下来撸代码了
主要思路
使用 page 变量来实现翻页
我们使用 requests 请求当当网
然后将返回的 HTML 进行正则解析
由于我们暂时还没学到数据库
所以解析完之后就把内容存到文件中
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)
请求当当网
当我们请求成功之后
拿到源代码
def request_dandan(url): try: response = requests.get(url) if response.status_code == 200: return response.text except requests.RequestException: return None
拿到源代码了
就要对其解析
使用正则表达式获取我们想要的关键信息
获取到了之后我们封装一下数据
def parse_result(html): pattern = re.compile('.*?list_num.*?(d+).