当前位置: 首页 > 工具软件 > CDE > 使用案例 >

关于python3爬取'http://www.cde.org.cn(国家药品监督管理评审中心)的思路 及源码

朱兴学
2023-12-01

对于这样一个网站 :

1.selenium 但是很遗憾告诉你 后天会识别出来你用的selenium (这里可以考虑注入js,规避)

2.pyqt5来进行我们的网页信息提取

3.利用webbrowse(调用电脑上安装浏览器,非插件selenium)    browsercookie  requests 来进行爬取

这里我们采用方案3 思路如下: 先用webbrowse 打开浏览器然后 利用browsercookie 获取浏览器得cookie ,然后带到我们的requests 进行url 访问,这里 在url 地址得时候会用fiddler 抓取我们url 具体得参数:

代码如下:

import webbrowser
import browsercookie
import requests
import os
import time
url = 'http://www.cde.org.cn/priorNotice.do?method=priorNoticeList&noticeType=2' 
chromePath = r'C:\Users\wuser\AppData\Local\Google\Chrome\Application\chrome.exe' #自己电脑chrome安装地址

webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chromePath))
webbrowser.get('chrome').open(url)
time.sleep(5)
chrome_cookie = browsercookie.chrome()
# 关闭应用
# print(chrome_cookie)
# os.system('TASKKILL /F /IM chrome.exe')
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36", }
data={   #这里得参数 我是用fiddler 抓取的 不知道的话可以私信我
"currentPageNumber":9,
    'noticeType':2,
    "pageroffset":160,
    'pagenum':9,
    'pageMaxNumber':20,
    'pageMaxNum':20,
}
response = requests.post('http://www.cde.org.cn/priorNotice.do?method=priorNoticeList&noticeType=2',cookies=chrome_cookie, headers=headers, verify=False,data=data) #fiddler抓取的
with open('text', 'a+',encoding='utf-8') as f:
    f.write(response.text)

####注意  :不能直接写for循环遍历很多出来 ,个人猜测后天做了ip限制 爬取的策略 ,可以加ip代理测试(这里只是爬取一页,后面的很多也要加代理进行,代理我这边使用的极光代理)

 类似资料: