python 爬虫的初步实践
简介
我的sisiter,想要我爬一些试题给她。有80套,她不想手工点,所以,我来了,比较简单的网站。所以没有费很大的力气。期间参考了一系列的网站,都没有记录下来。
code
#!/usr/bin/env python
#coding=utf-8
import pdfkit
import time
import requests
import sys
import urllib2
import re
def get_hiddenvalue(url):
request=urllib2.Request(url)
reponse=urllib2.urlopen(request)
resu=reponse.read()
VIEWSTATE=re.findall(r'<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />',resu, re.I)
EVENTVALIDATION =re.findall(r'input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*?)" />', resu,re.I)
return VIEWSTATE[0],EVENTVALIDATION[0]
def get_hiddenvalue_string(myStr):
VIEWSTATE=re.findall(r'<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />',myStr, re.I)
EVENTVALIDATION =re.findall(r'input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*?)" />', myStr,re.I)
return VIEWSTATE[0],EVENTVALIDATION[0]
reload(sys)
sys.setdefaultencoding( "utf-8" )
data = {
'cid':'1',
'pid':'5'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
}
options = {
'page-size': 'A4',
'margin-top': '0mm',
'margin-right': '0mm',
'margin-bottom': '0mm',
'margin-left': '0mm',
# 'orientation':'Landscape',#横向
'encoding': "UTF-8",
'no-outline': None,
# 'footer-right':'[page]' 设置页码
}
myMap=["UniversityPsychology","HigherEducationRegulations","HigherEducation","TeacherEthics"]
confg = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
for i in range(4):
for j in range(20):
data['cid'] = str(i+1)
data['pid'] = str(j+1)
url='http://zjzx.zjnu.edu.cn/test/Default.aspx?cid='+str(i+1)+'&pid='+str(j+1)
#response = requests.post(url=url,data=data,headers=headers)
myStr = myMap[i]+'_'+'exam'+str(j+1)+'.pdf'
#response.encoding = 'utf-8'
myStr1 = myMap[i]+'_'+'exam'+str(j+1)+'.html'
data['Button1'] = '提交并查看单选题答案'
data['drop1']= '1'
data['drop2']='1'
data['__VIEWSTATE'],data['__EVENTVALIDATION'] = get_hiddenvalue(url) # 请查阅__VIEWSTATE __EVENTVALIDATION 一个是把所有的按键信息编码上传,一个是加密用的
response = requests.post(url=url,data=data,headers=headers)
responseReturn = response.text
time.sleep(3)
del data['Button1']
data['__VIEWSTATE'],data['__EVENTVALIDATION']=get_hiddenvalue_string(responseReturn)
data['Button2']='提交并查看多选题答案'
response = requests.post(url=url,data=data,headers=headers)
responseReturn = response.text
time.sleep(3)
del data['Button2']
data['__VIEWSTATE'],data['__EVENTVALIDATION']=get_hiddenvalue_string(responseReturn)
data['Button3']='提交并查看判断题答案'
response = requests.post(url=url,data=data,headers=headers)
responseReturn = response.text
del data['Button3']
with open(myStr1,'a') as file:
file.write(responseReturn)
with open(myStr1, 'r') as file:
answer = file.read()
pdfkit.from_string(answer, myStr,configuration=confg,options=options)
#pdfkit.from_url(url, myStr,configuration=confg)
python 爬虫的初步实践的更多相关文章
- python 爬虫之 urllib 实践
文章更新于:2020-03-19 注:本文参考官方文档进行 urllib 的讲解. 文章目录 一.urllib 模块介绍 1.urllib.request.py模块 (1)`urlopen`函数 (2 ...
- Python爬虫学习:二、爬虫的初步尝试
我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...
- 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)
目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...
- 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块
孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...
- python爬虫实践教学
i春秋作家:Mochazz 一.前言 这篇文章之前是给新人培训时用的,大家觉的挺好理解的,所以就分享出来,与大家一起学习.如果你学过一些python,想用它做些什么又没有方向,不妨试试完成下面几个案例 ...
- python小白的初步爬虫
前序: 最近工作不是很忙,领导突然找我谈话,说是谈话,其实就是分配活呗.果不其然,很快进入正题, 给了我一个网址链接,然后说需要商品的信息...巴拉巴拉.好吧,去做吧. 我当时的内心是崩溃的,pyt ...
- python爬虫实践
模拟登陆与文件下载 爬取http://moodle.tipdm.com上面的视频并下载 模拟登陆 由于泰迪杯网站问题,测试之后发现无法用正常的账号密码登陆,这里会使用访客账号登陆. 我们先打开泰迪杯的 ...
- 【Python爬虫】听说你又闹书荒了?豆瓣读书9.0分书籍陪你过五一
说明 五一将至,又到了学习的季节.目前流行的各大书单主打的都是豆瓣8.0评分书籍,却很少有人来聊聊这9.0评分的书籍长什么样子.刚好最近学了学python爬虫,那就拿豆瓣读书来练练手. 爬虫 本来思路 ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- [python爬虫] Selenium定向爬取虎扑篮球海量精美图片
前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...
随机推荐
- 保存计算过程的计算器——java实现
一.设计模型 按照MVC-Model View Control(模型,视图,控制器)的设计思想展开程序的设计和代码的编写.数据模型部分相当于MVC中的Model角色,视图设计部分给出的界面部分相当于M ...
- react-router-dom嵌套路由实践
想要通过react-router-dom实现类似vue的router-view的嵌套路由效果,在点击导航菜单时切换页面,官方文档是真的没找到相关内容,现做个总结: 在createBrowserRout ...
- termux添加ll命令
cd ~ vim .bashrc 添加如下内容 alias ll="ls -l" 保存退出 :wq source .bashrc 参考:https://www.cnblogs.co ...
- 信息资源管理综合题之“QS认证是什么标准 和 如何证明已通过QS 和 可否建立自己的生产标准”
一.案例:自2003年起,我国开始对大米.食用植物油等食品进行了一种新的管理制度:食品质量安全市场准入制度,到目前为止,所有经过加工的食品,生产地址在国内的产品全部必须申请生产许可证,经过强制性的检验 ...
- Json工具类之"Json格式转换总结"
一.HashMap转Json HashMap<String, String> oldContentMap = new HashMap<>(); oldContentMap.pu ...
- 基于First Order Motion与TTS的AI虚拟主播系统全流程实现教程
前言:多模态虚拟主播的技术革命 在AI内容生成领域,虚拟主播技术正经历从2D到3D.从固定模板到个性化定制的跨越式发展.本文将深入解析如何通过Python技术栈构建支持形象定制与声音克隆的AI虚拟主播 ...
- 制作一个炫酷的多小球碰碰的 JS 网页,入门物理碰撞模拟和类的应用
目录 前言 先画一个圆 完善我们的类 小球动起来 最简单的碰撞计算,接触墙壁反弹 向量类的完善 检测两小球之间的碰撞 完善碰撞的效果 重复计算的问题 撞击墙壁定格问题 内存问题 随机数生成多个小球 参 ...
- C# 在Excel中设置文本的对齐方式、换行、旋转
在 Excel 中,对齐.换行和旋转是用于设置单元格内容显示方式的功能.合理的设置这些文本选项可以帮助用户更好地组织和展示 Excel 表格中的数据,使表格更加清晰.易读,提高数据的可视化效果.本文将 ...
- UVW源码漫谈(一)
博客园是个非常好的学习知识的地方,相信有很多人跟我一样,园龄3年,从博客园不知道拷了多少代码,看了多少博客,自己却一篇博客都没写过.真是罪过. 这次准备写几篇关于这个项目源码的阅读和理解的文章,大家一 ...
- odoo接口
@http.route('/zimo_lunch/select/<string:db_name>', type='http', auth='none')def trash_demo(sel ...