良久没有更文了,坚持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,最后就剩余入库了,跑一下