Python爬取中药网站信息并对其进行简单的分析
开发工具
- Python版本:3.5.4
- 相关模块:
爬虫:
import requests
from bs4 import BeautifulSoup
词云:
from wordcloud import WordCloud
import jieba
from os import path
import matplotlib.pyplot as plt
主要思路:
写了两个文件,具体如下:
1).数据爬取并生成txt文件的py文件
2).利用python相关的包生成词云相关操作的py文件
(2).遇到的问题以及解决方案:
wordcloud包的安装配置出现很大的问题,本机系统装载了两个python版本导致装载出现很多额外的问题。
- 解决:在同学的帮助下安装了whl文件并删除了本机中的另一个python版本。
信息爬取过慢
- 解决:暂未解决。爬取的页面预计超过100p,所以有关方面可能需要依赖别的技术。
使用演示
程序运行截图:
导出文档:
数据爬取并生成txt文件的py文件:
import requests
from bs4 import BeautifulSoup
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
#获取——————————————————————————————————————————
def catchSoup(url):#url='http://www.18ladys.com/post/buchong/'res=requests.get(url)res.encoding='utf-8'soup=BeautifulSoup(res.text,'html.parser')return soup#类型及其网页查找(首页查找)——————————————————————
def kindSearch(soup):herbKind=[]for new in soup.select('li'):if(new.text!='首页'):perKind=[]perKind.append(new.text)perKind.append(new.select('a')[0].attrs['href'])herbKind.append(perKind)return herbKind#药名查找(传入页面)——————————————————————————————————————————————————————
def nameSearch(soup):herbName=[]for new in soup.select('h3'):pername=new.text.split('_')[0].rstrip('图片').lstrip('\xa0').split('的功效')[0].split('(')[0].split('功效')[0].rstrip('的')herbName.append(pername)return herbName#分页及详细地址——————————————————————————————————————————————————————————
def perPage(soup):kindPage=[]add=[]for new in soup.select('.post.pagebar'):for detail in new.select('a'):d=[]d.append(detail.text)d.append(detail.attrs['href'])kindPage.append(d)kindPage.remove(kindPage[0])kindPage.remove(kindPage[-1])return kindPage
#爬取某一类的所有药名:kind是一个数字,照着kindSearch的结果输入。————————————
def herbDetail(kind):soup=catchSoup('http://www.18ladys.com/post/buchong/')#从首页开始kindName=kindSearch(soup)[kind][0] #这一类草药的类名adds=kindSearch(soup)[kind][1] #这一类草药的第一页地址totalRecord = [] #这一类草药的所有名字print("正在爬取 "+str(kind)+'.'+kindName)totalRecord.append(nameSearch(catchSoup(adds)))#第一页的草药for add in perPage(catchSoup(adds)): #第二页以及之后的草药pageAdd=add[1]totalRecord.append(nameSearch(catchSoup(pageAdd)))#print(nameSearch(catchSoup(pageAdd)))print(totalRecord)return totalRecord#===========================================================
# 操作
#===========================================================
if __name__=="__main__":#获取类别名字及其网页地址—totalKind=kindSearch(catchSoup('http://www.18ladys.com/post/buchong/')) #首页#获取某一类中药的各种药名kind=0detailContent = ''while(kind<20): #如果要爬取全网站请写41index = 1 #前面的序列号指示totalRecord = []totalRecord=herbDetail(kind)if(kind==0):detailContent+='目录:\n'for i in totalKind:detailContent+=str(index)+'.'+i[0]+' 'index+=1kind+=1continueelse:detailContent+='\n'+str(totalKind[kind-1][0])+':\n'for i in totalRecord:k=0while k<len(i):detailContent+=str(index)+'.'+i[k]+' 'index+=1k+=1kind+=1f = open('herbDetail.txt', 'a+',encoding='utf-8')
f.write(detailContent)
f.close()
词云生成部分
from wordcloud import WordCloud
import jieba
from os import path
import matplotlib.pyplot as plt
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
comment_text = open('D:\\herbDetail.txt','r',encoding='utf-8').read()
cut_text = " ".join(jieba.cut(comment_text))
d = path.dirname(__file__)
cloud = WordCloud(font_path="C:\\Windows\\Fonts\\simhei.ttf",background_color='white',max_words=2000,max_font_size=40
)
word_cloud = cloud.generate(cut_text)
word_cloud.to_file("cloud4herb.jpg")
#显示词云图片===================================
plt.imshow(word_cloud)
plt.axis('off')
plt.show()
Python爬取中药网站信息并对其进行简单的分析相关推荐
- python爬取网上租房信息_用python爬取租房网站信息的代码
自己在刚学习python时写的,中途遇到很多问题,查了很多资料,下面就是我爬取租房信息的代码: 链家的房租网站 两个导入的包 1.requests 用来过去网页内容 2.BeautifulSoup i ...
- python房子代码_用python爬取租房网站信息的代码
自己在刚学习python时写的,中途遇到很多问题,查了很多资料,下面就是我爬取租房信息的代码: 链家的房租网站 两个导入的包 1.requests 用来过去网页内容 2.BeautifulSoup i ...
- python爬取电影网站信息并写入文件
1 #https://www.domp4.com/list/6-1.html 2 import requests 3 import re 4 from bs4 import BeautifulSoup ...
- python爬取自如房间信息(一)
使用python和selenium+Chrome Headless爬取自如房间信息,并将结果存储在MongoDB中.其中最麻烦的应该是每间房的价格,因为自如是用一张图片和offset来显示价格,所以不 ...
- 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇
项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否则后果自行 ...
- php爬取房源,用python爬取二手房交易信息并进行分析
用python爬取二手房交易信息并分析第一步:编写爬虫 爬取某平台上海市十个区共900条二手房的交易信息#爬取上海十个区的二手房价信息 import requests from bs4 import ...
- 2021最新python爬取12306列车信息自动抢票并自动识别验证码
项目描述 项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否 ...
- python爬取12306列车信息自动抢票并自动识别验证码(一)列车数据获取篇
项目前言 自学python差不多有一年半载了,这两天利用在甲方公司搬砖空闲之余写了个小项目--[12306-tiebanggg-master].注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一 ...
- python爬取12306列车信息自动抢票并自动识别验证码(二)selenium登录验证篇
项目前言 自学python差不多有一年半载了,这两天利用在甲方公司搬砖空闲之余写了个小项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时 ...
最新文章
- Struts2的拦截器只允许有权限用户访问action
- c++ fhog学习资料整理
- 网站在收录后还需要做什么?
- python图片-python实现读取并显示图片的两种方法
- k8s集群搭建教程(centos k8s搭建)
- 玩转u-boot之【初探环境变量env/bootcmd/bootargs】
- Java知识点总结(注解-内置注解)
- flutter绘图基础之三阶贝塞尔曲线cubicTo
- IS-IS详解(八)——深入探究IS-IS DIS选举机制
- 学完Linux之后学什么语言,学习C语言一段时间后我们能做什么?
- Atitit. 项目文档目录大纲 总集合 v2
- ajax提交form返回数据格式,ajaxSubmit 返回值
- hackintosh黑苹果_如何构建用于编码的Hackintosh
- R 学习 - 火山图
- 微信小程序的支付流程 —— 总结
- cannot import name ‘_validate_lengths的解决办法
- T检验三种方法的区分
- 怎么在pdf上编辑文字内容
- lajp linux教程,linux IMX6 汇编点亮一个LED灯
- Win10怎么关闭smartscreen筛选器检测功能?