python做网站实战_Python 入门实战之爬女神做网站

不知道这里有多少球迷,又有多少人知道“懂球帝”这个网站,今天我们的爬虫目标就是“懂球帝”的女神大会板块,开始吧。

老规矩,还是先给出代码:

数据爬取

获取 ID 信息

首先我们可以通过抓取懂球帝 App 的网络请求,拿到一个 API(具体如何做 App 抓包,可以在网络上查询下):

http://api.dongqiudi.com/search?keywords=type=all&page=

我们使用 Postman,来查看下该 API 的返回数据是怎样的:

可以看到,通过键入不同的 keywords,API 可以返回不同的信息,我们通过搜索“女神大会”,并从返回结果中获取 ID、URL 和 thumb 即可。

ID 后面用来拼接女神所在页面的 HTML 地址;而 thumb 则是女神的封面照片,收藏吧。

接下来,我们就可以根据该 API 的请求和响应,写一个抓取全部女神信息的函数:

def get_list(page):

nvshen_id_list = []

nvshen_id_picture = []

for i in range(1, page):

print("获取第" + str(i) + "页数据")

url = 'http://api.dongqiudi.com/search?keywords=%E5%A5%B3%E7%A5%9E%E5%A4%A7%E4%BC%9A&type=all&page=' + str(i)

html = requests.get(url=url).text

news = json.loads(html)['news']

if len(news) == 0:

print("没有更多啦")

break

nvshen_id = [k['id'] for k in news]

nvshen_id_list = nvshen_id_list + nvshen_id

nvshen_id_picture = nvshen_id_picture + [{k['id']: k['thumb']} for k in news]

time.sleep(1)

return nvshen_id_list, nvshen_id_picture

代码还是比较简单的,循环请求 API 地址,并把 ID 和 thumb 保存到列表当中。

下载 HTML 页面

下面我们打开“懂球帝”网站,可以看出,每一个页面,都是由如下规律的页面组成的:

http://www.dongqiudi.com/news/****

而 news 后面接的就是我们上一步拿到的 ID 信息,比如我们拿到“刘岩”的 ID 为 813611,那么访问地址:

http://www.dongqiudi.com/news/813611

我们就来到了刘岩所在的页面。

并且,每个页面都会有前一期女神的得分情况,这个也是我们要关注的。

现在我们已经知道了网页地址的组成规律,那么就可以写函数,来下载网页到本地了。

def download_page(nvshen_id_list):

for i in nvshen_id_list:

print("正在下载ID为" + i + "的HTML网页")

url = 'https://www.dongqiudi.com/news/%s' % i

download = DownloadPage()

html = download.getHtml(url)

download.saveHtml(i, html)

time.sleep(2)

class DownloadPage(object):

def getHtml(self, url):

html = requests.get(url=url, cookies=config.session, headers=config.header).content

return html

def saveHtml(self, file_name, file_content):

with open('html_page/' + file_name + '.html', 'wb') as f:

f.write(file_content)

download_page 函数接收一个列表(就是上一个函数的返回值 nvshen_id_list),通过 requests 库来请求页面并保存至本地。同时为了方式请求过于频繁,做了 2 秒的延时等待设置。

这里还要注意一点的是,这里是设置了 cookies 和 headers 的,否则是无法拿到正常 HTML 数据的。

cookies 和 headers 配置如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值