做破解软件网站赚广告费,如何将wordpress上传,百度官网入口,悬赏做海报的网站在爬学校安全教育题库的时候发现题库分页实际上执行了一段js代码#xff0c;如下图所示 点击下一页时是执行了函数doPostBack#xff0c;查看页面源码如下 点击下一页后这段js提交了一个表单#xff0c;随后后端返回对应数据#xff0c;一开始尝试分析获取对应两个参数如下图所示 点击下一页时是执行了函数doPostBack查看页面源码如下 点击下一页后这段js提交了一个表单随后后端返回对应数据一开始尝试分析获取对应两个参数封装在data中通过POST请求获得新的一页后面尝试了很久始终不成功…肯定是因为太菜
没办法只能使用神器selenium缺点是要调用浏览器肯定是比较慢的但是python直接给你模拟浏览器的各种操作而且不用抓包分析比较方便。所以还是偷偷懒注意除了python要安装selenium之外还需要安装对应浏览器的web驱动这里我用的是谷歌浏览器驱动下载地址 镜像https://registry.npmmirror.com/binary.html?pathchromedriver/ 如果你谷歌版本新镜像上可能没有对应版本。 官网https://sites.google.com/chromium.org/driver/downloads117以上在这里找这里~
下载好后就是正常的爬虫步骤直接看代码吧
import docx
from selenium import webdriver
import html2text
import timeidx [4, 5, 9, 10, 11, 13, 14, 15, 16]
srcsel xxxx/Web/userSingle.aspx?ID # 选择题
srcjg xxxx/Web/userIs.aspx?ID # 判断题def remove_tags(text):h html2text.HTML2Text()h.ignore_links Truereturn h.handle(text)def process(url):driver webdriver.Chrome()driver.get(url)res driver.find_element(id, GridViewx).get_attribute(innerHTML)res remove_tags(res)doc.add_paragraph().add_run(res)pages int(driver.find_element(id, GridViewx_ctl13_lblPageCount).text)# pages 2for i in range(pages - 1):time.sleep(1.5)driver.find_element(id, GridViewx_ctl13_btnNext).click()res driver.find_element(id, GridViewx).get_attribute(innerHTML)res remove_tags(res)doc.add_paragraph().add_run(res)driver.quit()doc docx.Document(res.docx)
for pid in idx:process(srcsel str(pid))time.sleep(3)process(srcjg str(pid))
doc.save(res.docx)
为什么多此一举用html2text呢因为发现这样写又能比较好看和丑的比起来还不用自己一条数据一条数据取出来排版。然后代码里我直接写进word文档里了这里有个小坑你的word文档docx中必须得有东西不能是空的要不然会报错…
懒得排版凑合看看