好医生网站资讯数据爬虫详解
站长
· 阅读数 8
好久没有更文了,坚持30天每天一更。第一天,今天详解一下好.医.生网站医学资讯数据采集的详细过程,本文仅供学习如有侵权请联系删除
1,先欣赏一下我们的板砖专用图 2,话不多说正式开始,首先打开网站主页可以看到医学资讯板块鼠标触碰可见有(医械世界、医械快讯、每日药闻、医声医事,健康科普)五个小板块。这里需要留意。
2.1,先向下走,进入医械世界模块可见数据列表页
并且在数据列表底部有加载更多,这就是翻页了,一般这种情况那么数据翻页都是在接口中进行的。
2.2,F12看一下接口什么样子
可见接口中两个参数skip和cid且都不是加密数据这就简单多了。 但是没有page之类的参数名称盲猜一下skip就是数据展示条数的一个显示,继续向下一页可见skip变成了20,对应接口中返回的数据也是8条数据,这就对上了。
2.3,经过查其他四个板块发现如下
- 医械世界---对应接口yx/news
- 医械快讯---对应接口yx/news
- 每日药闻---对应接口yq/news
- 医声医事---对应接口yj/news
- 健康科普---对应接口jk/news
3,到这里就明了了,开始写代码。
3.1,首先需要把四个小板块进行遍历
cls ={'医械世界':'http://www.haoyisheng.com/yx/news/moreData',
'每日药闻': 'http://www.haoyisheng.com/yq/news/moreData',
'医声医事': 'http://www.haoyisheng.com/yj/news/moreData',
'健康科普': 'http://www.haoyisheng.com/jk/news/moreData'
}
3.2,下一步就spier了,这里需要注意的就是没有总页数哪么就是需要这样来判断还有没有下一页,没有下一页的时候结束
next = 1
skip = 4
page = 1
while next == 1:
skip = skip + page*8
print(skip,url)
params = {
'skip': f'{skip}',
'cid': '0',
}
data_list = requests.get(url, params=params, headers=headers, verify=False).json()['data']
if len(data_list) == 8:
page += 1
else:
next = 0
3.3,ok下一步就是解析数据了,json中数据比较杂乱这里我们只要需要的数据,发现正文也在这个里面,哪就剩了一部详情页的解析
for data in data_list:
title = data['name']
leixing = data['categories'][0]['name']
datetime = data['created_at']
summary = data['summary']
content = data['content']
zhengwen = ''
res = etree.HTML(content)
zhengwen_list = res.xpath("//p//text()")
for zw in zhengwen_list:
zhengwen += zw
item = {
'title':title,
'leixing':leixing,
'datetime':datetime,
'summary':summary,
'zhengwen':zhengwen,
}
ok,最后就剩下入库了,跑一下