对于这样一个网站 :
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¬iceType=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¬iceType=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代理测试(这里只是爬取一页,后面的很多也要加代理进行,代理我这边使用的极光代理)