-selenium使用流程
-环境安装:pip install selenium
-下载一个浏览器的驱动程序
-下载路径:http://chromedriver.storage.googleapis.com/index.html
-驱动程序和浏览器的映射关系:http://blog.csdn.net/huilan_same/article/details/51896672
-实例化一个浏览器对象
-编写基于浏览器自动化的程序
实例一:
对国家药品监督管理总局中化妆品公司名称进行爬取:http://scxk.nmpa.gov.cn:81/xk/
由于该页面是自动加载信息,需要ajax请求才能有这些公司名称等信息,所以如果不急于selenium模块的话,爬取流程相对复杂,代码如下:
1 import requests 2 import json 3 4 if __name__=="__main__": 5 url="http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList" 6 headers={ 7 "User - Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.88Safari / 537.36" 8 } 9 for page in range(1,8): 10 page=str(page) 11 data={ 12 "on": "true", 13 "page": page, 14 "pageSize": 15, 15 "productName":"", 16 "conditionType": "1", 17 "applyname":"", 18 "applysn":"" 19 } 20 21 dic_obj=requests.post(url=url,headers=headers,data=data).json() 22 23 id_list=[] 24 for item in dic_obj['list']: 25 id_list.append(item['ID']) 26 dic_list=[] 27 for item in id_list: 28 url="http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById" 29 data={ 30 "id": item 31 } 32 33 dic_obj=requests.post(url=url,headers=headers,data=data,).json() 34 dic_list.append(dic_obj) 35 36 fp=open("化妆品生产许可证信息.json", "w", encoding="utf-8") 37 json.dump(dic_list,fp=fp,ensure_ascii=False)
若基于selenium时,特别方便
代码如下:
1 from selenium import webdriver 2 from lxml import etree 3 from time import sleep 4 #谷歌浏览器启动配置 5 option=webdriver.ChromeOptions() 6 #配置参数 禁止Chrome正在受到自动化软件控制 7 option.add_argument('disable-infobars') 8 9 10 #打开chrome浏览器 11 #实例化一个浏览器对象(传入浏览器的驱动程序) 12 bro=webdriver.Chrome(chrome_options=option) 13 14 #让浏览器发起一个指定Url对应请求 15 bro.get('http://scxk.nmpa.gov.cn:81/xk/') 16 17 #获取浏览器当前页面的页面源码数据 18 page_text=bro.page_source 19 20 #解析企业名称 21 tree = etree.HTML(page_text) 22 23 li_list=tree.xpath('//ul[@id="gzlist"]/li') 24 25 for li in li_list: 26 name=li.xpath('./dl/@title')[0] 27 print(name) 28 29 sleep(5) 30 bro.quit()
运行结果如下:
