-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()

运行结果如下: