简介:本文介绍使用python抓取考试资料网的答案,将答案写到一个html里面,支持多url输入.解决考试资料网上面答案不能被复制的问题.

使用方法

  1. 找到你需要的题目,如http://www.ppkao.com/tiku/shiti/428976.html,点击点击查看答案得到一个新的链接http://www.ppkao.com/tiku/daan/428976/40da7044806ecf7eca6388e4cff72407.
  2. 运行本脚本:

    ➜ ~ python /Users/yanzi/work/workspaces/python/ppkao/spider.py
    .....请输入url地址,多个url以空格分开....
    http://www.ppkao.com/tiku/daan/428976/40da7044806ecf7eca6388e4cff72407
    -----------------That is ok---------------

    注意,python版本为3.5,使用2.7会出错

源码如下

源码也可以直接看github

import sys,urllib.request, os
from bs4 import BeautifulSoup
# python /Users/yanzi/work/workspaces/python/spider.py http://www.baidu.com
# print(sys.argv[0])
# print(urllib.__file__)# 获取脚本文件的当前路径
def cur_file_dir():path1 = sys.path[0]if os.path.isdir(path1):return path1elif os.path.isfile(path1):return os.path.dirname(path1)def get_source_url():url = sys.argv[1]if 1:return urlelse:return urldef get_template_body():# 加载模版path = cur_file_dir() + "/template.html"soup2 = BeautifulSoup(open(path), "html.parser")body = soup2.bodyreturn (soup2, body)def get_answer(url):content = urllib.request.urlopen(url).read()
# fp = open("/Users/yanzi/Desktop/aaa.html", "wb")
# fp.write(content)
# fp.close()soup = BeautifulSoup(content, "html.parser")
# print(soup.title)answer1 = soup.find('div', class_='single-siti clearfix')answer1.i.extract()answer2 = soup.find('div', class_='tm-bottom')answer2.a.extract()answer3 = soup.find('div', class_='analysis clearfix')return (answer1, answer2, answer3)"""
def get_url_from_browser():path = cur_file_dir()# dr = webdriver.Chrome(executable_path=path + '/chromedriver')chromedriver = '/Applications/Google Chrome.app/Contents/MacOS' + '/chromedriver'os.environ["webdriver.chrome.driver"] = chromedriverdr = webdriver.Chrome(chromedriver)dr.get("http://www.163.com")url = dr.current_urlprint(url)def get_url_from_browser2():path = cur_file_dir()dr = webdriver.Firefox()# dr.get("http://www.163.com")url = dr.current_urlprint(url)# url = dr.open_new_tab("http:\\www.163.com")"""# url=get_source_url()
(soup2, body) = get_template_body();
url = input(".....请输入url地址,多个url以空格分开....\n")
# print(url)
urls = url.split(" ")
for temp_url in urls:(a1, a2, a3) = get_answer(temp_url)body.append(a1)body.append(a2)body.append(a3)tt = BeautifulSoup("<br/>", "html.parser")body.append(tt)#save to answer.html
fp = open("/Users/yanzi/Desktop/answer.html", "w")
fp.write(soup2.prettify())
fp.close()
print('-----------------That is ok---------------')

备注

1.本来我的构想是python直接抓取当前浏览器打开的符合条件的网址,然后把答案爬出来。但是经过实验,无法直接获得到浏览器当前地址。它可以打开一个新的浏览器shell,但是与原来打开的不同.所以避免不了要手动把浏览器的地址粘贴过来。

2.python发起一个网络请求

content = urllib.request.urlopen(url).read()
soup = BeautifulSoup(content, "html.parser")

通过urllib发起一个请求,通过read得到内容,然后将内容传进去,实例化一个BeautifulSoup对象,就着就可以用soup.titlesoup.body得到对应字段,然后用answer1 = soup.find('div', class_='single-siti clearfix')find找到class对应的内容,return()可以返回多个字段。

3.open直接打开本地文件
soup2 = BeautifulSoup(open(path), "html.parser")

4.python的for循环

urls = url.split(" ")
for temp_url in urls:

5.python保存一个文件

fp = open("/Users/yanzi/Desktop/answer.html", "w")
fp.write(soup2.prettify())
fp.close()

整体都比较简单,记录于斯.如果有需要也可以把url来源直接放到数据库或文本里,然后批量处理。

参考链接

  1. Beautiful Soup 4.2.0 文档

python脚本一键抓考试资料网答案相关推荐

  1. 003.[python学习] 简单抓取豆瓣网电影信息程序

    003.[python学习] 简单抓取豆瓣网电影信息程序 声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和 ...

  2. 教你写个简单好用的Python脚本一键自动整理文件非常适合办公用~

    导语 小编以前经常把下载的东西放在桌面或者"下载"文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档. 不知道你是 ...

  3. 用Python脚本一键自动整理文件,轻松办公

    嗨嗨,大家下午好~ 我是小圆 因为自己对于电脑上的文件不怎么爱整理,经常把下载好的东西就随意的放在桌面上或者"下载"文件夹中,就使用过后再也没去管它了.久而久之,文件夹就变得乱七八 ...

  4. 利用python脚本一键为MySQL插入万条数据

    运行环境:Windows 10 技术栈:python3,MySQL8.x 编写目的 MySQL是我们研究开发时最常用的关系型数据库.当需要向MySQL数据库中插入大量数据时,一次一条地插入显然不得劲. ...

  5. 阅读分析下列html,阅读下列说明和 HTML 文本,分析其中嵌入的 JavaScript. 脚本..._考试资料网...

    阅读下列说明和 HTML 文本,分析其中嵌入的 JavaScript. 脚本,将应填(n)处的语句写在对应栏内. [说明] 登录Web页时,在Web页中显示"welcome to my ho ...

  6. 阅读分析下列html,阅读下列说明和HTML文本,分析其中嵌入的JavaScdpt脚本, [说明]..._考试资料网...

    阅读下列说明和HTML文本,分析其中嵌入的JavaScdpt脚本, [说明] 在表单的多行文本域中显示打字效果,即先显示一个光标,再显示一个字,然后循环显不, [HTML 文本] <html&g ...

  7. 替代上学吧考试资料网的搜题找答案网站

    问答类大部分平台现在都要钱,推荐一个查询的方法以及几个免费的平台供参考. 搜题的替代方法 网上很多的问答平台会互相采集数据,因此,在问答库上学吧搜到的要钱的问题,可以吧题干放到百度搜索下,匹配找下免费 ...

  8. python怎么批量下载年报_如何用Python写一个抓取新浪财经网指定企业年报的脚本...

    匿名用户 1级 2017-08-02 回答 1.先得到需要的上市公司的股票代码和名字. 2.分析下载链接地址.以康达尔为例,年报地址,下载链接 的页面 ,链接末尾的8个数字前6个是股票代码,后两位01 ...

  9. Python脚本一键找出哪些微信好友删了你(附源码)

    查看被删的微信好友 原理就是新建群组,如果加不进来就是被删好友了(不要在群组里讲话,别人是看不见的) 用的是微信网页版的接口 查询结果可能会引起一些心理上的不适,请小心使用-(逃 还有些小问题: 结果 ...

最新文章

  1. 习惯了收听虾米酷狗网易云音乐的你,好歹知道一下音乐推荐到底是咋回事吧
  2. Java模板引擎-FreeMarker
  3. Django学习 -- 第一个项目(Hello World)
  4. java从键盘输入数据斐波那契数_从键盘输入一个正整数n,打印出斐波那契数列的前n个元素...
  5. Hadoop 文件命令
  6. Hadoop笔记整理(三):Zookeeper
  7. 远程体验Linux Lite
  8. web开发python 人工智能_【图片】python可以做什么———Web开发,数据分析,人工智能和脚本开发【python学习吧】_百度贴吧...
  9. 上班一族“黑话”辞典大曝光
  10. docker-compose文件详解
  11. 情感分析技术:让智能客服更懂人类情感
  12. Python+Opencv识别视频统计人数
  13. sram是靠什么存储信息
  14. 菜鸟Java开发人员的找工作之旅(1)
  15. 神经网络学习笔记(一) RBF径向基函数神经网络
  16. 喧喧发布 2.5.1 版本,支持移动版和桌面端同时登录
  17. 以太网芯片MAC和PHY
  18. 国产系统下的DES,SM4工具,银河麒麟V10桌面系统,飞腾芯片
  19. ASP.NET CORE WebAPI 中 Route 属性配置
  20. Linux命令·rmdir

热门文章

  1. js校验图片是否加载成功或失败
  2. c语言合法标识符号大全,C语言合法标识符
  3. MySQL适合运行在Docker中吗?
  4. 计算机的声音怎么设置在哪设置方法,Win7电脑声音设置的方法
  5. 分享一波秋招经历和面经吧!
  6. 使用SpringBoot项目继承Knif4j访问doc.html页面,出现No mapping for GET /doc.html
  7. E-PUCK机器人-例子
  8. 皮皮安学习Java第八天
  9. 数学对于人类意味着什么
  10. IO流,多线程,网络编程(4)JavaSE