cookie模拟登陆爬取药智网中药材数据库数据

第一步:注册一个你的账号

第二步:登录账号

第三步:发现我们要找的数据在https://db.yaozh.com/zhongyaocai/1.html这个网页里,一共10225条数据其实就只用修改这个网页的最后那个数字就行。

第四步:按F12再按F5检查元素,找到一个带请求头部的元素,复制你的cookie

第五步:抓取一个网页的中药材标题及内容

from bs4 import BeautifulSoup
import urllib
import requests 
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11'} 
cookie={'cookie':'你的cookie'}
value=[]
th=[]
afterURL = "https://db.yaozh.com/zhongyaocai/600.html"        # 想要爬取的登录后的页面  
html = requests.get(afterURL,cookies=cookie, headers = header).text # 获得登陆后的响应信息,使用之前的cookie  
bsobj=BeautifulSoup(html)
f=bsobj.findAll("span",{"class":"toFindImg"})   #抓取的属性内容
items=bsobj.findAll("th",{"class":"detail-table-th"}) #抓取的标题
for i in f:  #获得一个内容list
    new=i.get_text()
    k=new.replace(' ', '') #去空格
    k2=k.replace('\n', '') #去换行符
    value.append(k2)
for item in items: #获得一个标签list
    new=item.get_text()
    k=new.replace(' ', '')
    k2=k.replace('\n', '')
    th.append(k2)
dic={}  #将标题和内容以字典键值对形式对应
for i in range(len(th)):
    dic[th[i]] = value[i]
#由于每个页面的中药的特征值都不同,所以这里我用的方法不是很好。用null值替代没有出现的特征值,防止之后数据错位。好像可以用mongo来处理。
result=[]
if ('药材名称' in dic):
    result.append(dic['药材名称'])
else :
    result.append('null')
if ('汉语拼音' in dic):
    result.append(dic['汉语拼音'])
else :
    result.append('null')
if ('英文名' in  dic):
    result.append(dic['英文名'])
else :
    result.append('null')
if ('拉丁文名' in  dic):
    result.append(dic['拉丁文名'])
else :
    result.append('null')
if ('原拉丁植物动物矿物名' in dic):
    result.append(dic['原拉丁植物动物矿物名'])
else :
    result.append('null')  
if ('药材别名' in dic):
    result.append(dic['药材别名'])
else :
    result.append('null')  
if ('药材类别' in dic):
    result.append(dic['药材类别'])
else :
    result.append('null') 
if ('药材来源' in dic):
    result.append(dic['药材来源'])
else :
    result.append('null')
if ('分布' in dic):
    result.append(dic['分布'])
else :
    result.append('null')                 
if ('鉴别' in dic):
    result.append(dic['鉴别'])
else :
    result.append('null') 
if ('化学成分' in dic):
    result.append(dic['化学成分'])
else :
    result.append('null')
if ('药理作用' in dic):
    result.append(dic['药理作用'])
else :
    result.append('null')
if ('性味归经' in dic):
    result.append(dic['性味归经'])
else :
    result.append('null')
if ('功能主治' in dic):
    result.append(dic['功能主治'])
else :
    result.append('null') 
if ('注意事项' in dic):
    result.append(dic['注意事项'])
else :
    result.append('null')
if ('附方' in dic):
    result.append(dic['附方'])
else :
    result.append('null')                   
if ('名家论述' in dic):
    result.append(dic['名家论述'])
else :
    result.append('null')
if ('现代临床研究' in dic):
    result.append(dic['现代临床研究'])
else :
    result.append('null')                 
if ('摘录' in  dic):
    result.append(dic['摘录'])
else :
    result.append('null')  
print(result)

 
 

猜你喜欢

转载自blog.csdn.net/Lida1997/article/details/80718801