python爬虫源代码_python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星书籍...

来啦,老弟

4674a29609a1dddb8f9d3b21c8d9e5c5.gif

我们已经知道怎么使用

python爬虫04 | 长江后浪推前浪,Requests库urllib库拍在沙滩上

进行各种请求骚操作

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

python爬虫05 | 年轻人,不会正则表达式你睡得着?有点出息没有

来过滤我们想要的内容

...

那么接下来

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

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

68b8becdfe74e59193979ce9235de1d2.png

怎么能发现好书呢?

所以我们

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

怎么样?

1728e733239465fe8e5c111d389475f9.gif

ok

接下来就是

学习 python 的正确姿势

请在电脑的陪同下

边看本文边练习

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

先摸清对方的底

我们才能战无不胜

727a4b3876e3160602fd7758a3463f1c.png

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

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

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

ffbd053736beb6a0fb7cdbf7bf117d34.png

每一页显示 20 本书

当我们点击下一页的时候

你可以发现地址变了

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

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

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

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

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

a084b1942102e120636a1410bb5fd0a9.png

接着

用我们之前说的python爬虫入门01:教你在 Chrome 浏览器轻松抓包 骚操作

来分析一下

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

以及

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

95a450de5b9becc38438622dc63885cd.gif

可以看到

我们通过 GET 请求

b15bf94bec4b44fe5e93aaa5e87b1512.png

我们的请求头

75ad0aed1c0d55e5e4aca40a5b1e9f3a.png

这是服务器返回来的数据

2477c160a0f2b4a003a27ed78b6eb9b9.png

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

3c089a77083845a725ed76056570734c.png

我们要的就是前 500 本书的

排名

书名

图片地址

作者

推荐指数

五星评分次数

价格

通过源码我们可以看到

这些信息被放在了

标签中
ffcedba5e4358b693a506276127990a5.png
ebaa82613f6fe7c9b3635d2c0ba86155.png

那么我们等会就可以使用

python爬虫05 | 年轻人,不会正则表达式你睡得着?有点出息没有

来进行过滤我们要的信息

一顿分析完了之后

接下来撸代码了

6bd9ae6624bb2494a96a9bf47fcc3470.png

主要思路

使用 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+).
.*?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值