Python采集中药药材数据

有位中医站长想要大量的中药价格数据,于是找上了我,花了一会儿时间用 Python 给他写了个简单的采集程序,最近忙着写问答功能一直没时间更新文章,导致百度流量下滑,今天拿来水一水,充充数。程序仅供参考学习,请勿用于商业用途!

直接上代码

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import requests
from bs4 import BeautifulSoup
import openpyxl
import time

#准备Excel
wb=openpyxl.Workbook()
wb.create_sheet(index=0,title='药材')
sheet=wb.worksheets[0]
excelnum=0
header={
"Cookie":"PHPSESSID=XXXXX",
}
#取页码
r=requests.get('http://www.yaocaicang.com/product_class.php?ClassID=639',headers=header)
gksoup = BeautifulSoup(r.text, "html")
strn=gksoup.find("div",attrs={"class":"Paging"})
li=strn.find_all("li")
page=li[len(li)-2].text
print(page)
for i in range(1, int(page),1):
r=requests.get('http://www.yaocaicang.com/product/639-0-0-0-0-0-0-0-0-0-0-'+str(i)+'.html',headers=header)
gksoup = BeautifulSoup(r.text, "html")
strn=gksoup.find("div",attrs={"class":"productList"})
a=strn.find_all('a')
for j in range(len(a)):
excelnum=excelnum+1
url="http://www.yaocaicang.com"+a[j].get("href")
#print(url)
r=requests.get(url,headers=header)
gksoup = BeautifulSoup(r.text, "html")
strn=gksoup.find("div",attrs={"class":"commodity_Details_cs ml20"})
strn.find('a').decompose()
name=strn.find("h3").text.strip()
print(name)
jiagehtml=strn.find("div",attrs={"class":"jiage"})
jgspan=jiagehtml.find_all("span")
if len(jgspan)>1:
jgspan[0].find('em').decompose()
cljg=jgspan[0].text
jgspan[1].find('em').decompose()
zjjg=jgspan[1].text
print("拆零:"+cljg)
print("整件:"+zjjg)
gghtml=strn.find("div",attrs={"class":"pyys"})
gginfo=gghtml.find_all("span")
gg=gginfo[1].find("small").text
print("规格:"+gg)
sheet.cell(excelnum,1,name)
sheet.cell(excelnum,2,cljg)
sheet.cell(excelnum,3,zjjg)
sheet.cell(excelnum,4,gg)
curtime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
wb.save(curtime+'.xlsx')

简单解释一下,由于目标站需要登录才能查看价格信息,所以这里为了节约时间直接使用了cookies登录。整个程序使用了 requests 网络请求模块,BeautifulSoup 网页解析模块,openpyxl 表格excel操作模块。模块相关安装教程这里就不说了,个人建议使用pip工具安装,十分快捷简单。详见Centos7.X升级默认Python到3.X并安装pip3扩展管理

最后的采集效果如下图所示

Python采集中药药材数据

Python采集中药药材数据

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242507.html

(0)
上一篇 2022年4月7日
下一篇 2022年4月7日

相关推荐

发表回复

登录后才能评论