开发工具
- 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=0
detailContent = ''
while(kind
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?