Python Post and Get 登陆web后台系统并抓取页面
#coding=utf8
#! /usr/bin/env python import httplib
import re
import socket
import urllib timeout = 60
socket.setdefaulttimeout(timeout) def getTable(): f = open('kvpage.html')
page = f.readlines()
f.close()
pattern = re.compile(r'.*<tbody>(.*?)</tbody>.*') for line in page:
#print line
m = pattern.match(line.strip())
if m is not None:
return m.group(1) return None def extractKvEvents(content): #init result
table = [] #init pattern
patternTR = re.compile(r"<tr>(.*?)</tr>")
patternTD = re.compile(r'<td class="confluenceTd">(.*?)</td>') #search all the rows
allrows = patternTR.findall(content)
if allrows is not None:
for row in allrows:
#print row
cols = patternTD.findall(row)
if cols is not None: table.append(cols) return table def outputToExcel(table):
for row in table:
print row def loginWiki(): httpClient = None
try:
params = urllib.urlencode({'os_username': 'xxxx@xxx.com',
'os_password': 'xxxx',
'login': 'Log In'}) headers = {"Content-type": "application/x-www-form-urlencoded"
, "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} httpClient = httplib.HTTPConnection("xxx.com", 8080, timeout=30)
httpClient.request("POST", "/login.action", params, headers) response = httpClient.getresponse()
# print response.status
# print response.reason
# print response.read()
# print response.getheaders()
print response.getheader('Set-Cookie')
cookieFile = open('cookie.txt', 'w')
cookieFile.write(response.getheader('Set-Cookie'))
cookieFile.close()
except Exception, e:
print e
finally:
if httpClient:
httpClient.close() def catchPage():
httpClient = None try:
#read cookie
f = open('cookie.txt')
cookie = f.read().strip()
print cookie
f.close() #init headers
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
'Cookie': cookie} #send request
httpClient = httplib.HTTPConnection('xxx.com', 8080, timeout=30)
httpClient.request('GET', '/xxxPath', headers=headers) #response是HTTPResponse对象
response = httpClient.getresponse()
print response.status
print response.reason htmlPage = open('kvpage.html', 'w')
htmlPage.write(response.read())
htmlPage.close()
except Exception, e:
print e
finally:
if httpClient:
httpClient.close() if __name__ == '__main__': loginWiki()
catchPage()
tablecontent = getTable()
table = extractKvEvents(tablecontent)
outputToExcel(table)
Python Post and Get 登陆web后台系统并抓取页面的更多相关文章
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- 简易数据分析 12 | Web Scraper 翻页——抓取分页器翻页的网页
这是简易数据分析系列的第 12 篇文章. 前面几篇文章我们介绍了 Web Scraper 应对各种翻页的解决方法,比如说修改网页链接加载数据.点击"更多按钮"加载数据和下拉自动加载 ...
- Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>
Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...
- python爬虫成长之路(二):抓取代理IP并多线程验证
上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...
- 利用cookies+requests包登陆微博,使用xpath抓取目标用户的用户信息、微博以及对应评论
本文目的:介绍如何抓取微博内容,利用requests包+cookies实现登陆微博,lxml包的xpath语法解析网页,抓取目标内容. 所需python包:requests.lxml 皆使用pip安装 ...
- Python爬虫入门教程 31-100 36氪(36kr)数据抓取 scrapy
1. 36氪(36kr)数据----写在前面 今天抓取一个新闻媒体,36kr的文章内容,也是为后面的数据分析做相应的准备的,预计在12月底,爬虫大概写到50篇案例的时刻,将会迎来一个新的内容,系统的数 ...
- Web Scraping(网页抓取)基本原理 - 白话篇
本文主要介绍 Web Scraping 的基本原理,基于Python语言,大白话,面向可爱的小白(^-^). 易混淆的名称: 很多时候,大家会把,在网上获取Data的代码,统称为"爬虫&qu ...
- python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送
最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容.于是开始了分析思路.博主是采用了多线程群发,因为微信对 ...
- Python爬虫入门教程 30-100 高考派大学数据抓取 scrapy
1. 高考派大学数据----写在前面 终于写到了scrapy爬虫框架了,这个框架可以说是python爬虫框架里面出镜率最高的一个了,我们接下来重点研究一下它的使用规则. 安装过程自己百度一下,就能找到 ...
随机推荐
- MySQL笔记(三)之数据插入更新与删除
INSERT INTO INSERT INTO 语句用于向表格中插入新的行. 语法: INSERT INTO 表 VALUES (值1, 值2,....) # 列数必须和值的个数匹配 INSERT I ...
- 【BZOJ 2749】 2749: [HAOI2012]外星人 (数论-线性筛?类积性函数)
2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Ou ...
- BZOJ1019 汉诺塔
定义f[i][j]为将i柱上的j个盘挪走(按优先级)的步数 p[i][j]为将i柱上的j个盘按优先级最先挪至何处 首先考虑一定p[i][j]!=i 设初始为a柱,p[i][j-1]为b柱 考虑两种情况 ...
- 「HAOI2015」按位或
「HAOI2015」按位或 解题思路 : 这类期望题一眼 \(\text{Min-Max}\) 容斥,只需要稍微推一下如何求 \(E(minS)\) 即可. \[ E(minS) = \frac{1} ...
- 「NOI2017」游戏
「NOI2017」游戏 题目描述 小 L 计划进行 \(n\) 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 \(A\).\(B\).\ ...
- Java反射机制涉及的类常见方法使用总结
import java.lang.reflect.Constructor; import java.lang.reflect.*; /*Class:代表一个字节码文件的对象,每当有类被加载进内存,JV ...
- 升压转换器 (Boost)
升压转换器 (Boost) 需要将输入电压转换为较高的输出电压时,升压转换器 (Boost)是唯一的选择. 升压转换器透过内部 MOSFET 对电压充电来达成升压输出的目的,而当 MOSFET 关闭时 ...
- Use a TL431 shunt regulator to limit high ac input voltage
Most isolated, offline SMPSs (switched-mode power supplies), including flyback, forward, and resonan ...
- SQL SERVER 函数与SQL语法
http://www.cnblogs.com/hoojo/archive/2011/07/16/2108129.html
- mysql字符串比较
select '123'B is TRUE; 1 SET @a='123'; select '123'is TRUE; 0 select cast('222' as ...