要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了。利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据。
因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了。这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并保存,然后利用这个cookies访问就可以了。
Tags: ,
这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法。它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~
当然如果会Selenium基于自动化测试爬虫、BeautifulSoup分析网页DOM节点,这就更方便了,但本文更多的是介绍基于正则的底层爬取分析。

Python Requests快速入门 不指定

jed , 2016-5-18 16:11 , 服务器技术 , 评论(0) , 阅读(26611) , Via 本站原创
快速上手
迫不及待了吗?本页内容为如何入门Requests提供了很好的指引。其假设你已经安装了Requests。如果还没有, 去 安装 一节看看吧。
首先,确认一下:
Requests 已安装
Requests是 最新的
让我们从一些简单的示例开始吧。
发送请求
使用Requests发送网络请求非常简单。
一开始要导入Requests模块:
Tags: ,
大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理。

1.URLError

首先解释下URLError可能产生的原因:

网络无连接,即本机无法上网
连接不到特定的服务器
服务器不存在
在代码中,我们需要用try-except语句来包围并捕获相应的异常。下面是一个例子,先感受下它的风骚
Tags: ,
FTP有ASCII和Binary两种传输模式。
Binary模式不会对数据进行任何处理。
Ascii模式会将回车换行转换为本机的回车字符。
  
由于WINDOWS和UNIX的行结束符不一样。所以从WINDOWS用Binary传输方式传输文本文件到UNIX时可能会出现^M。同样从UNIX用Binary方式传输文件到WINDOWS时,也可能出现回车换行显示不正确的问题。

WINDOWS下新建ftp_ascii.txt内容如下:

hello word!
WINDOWD TO UNIX !
TEST FTP ASCII;

我们分别用两种模式上传到UNIX.
ASCII模式正常

vi ftp_ascii.txt
hello word!
WINDOWD TO UNIX !
TEST FTP ASCII;

二进制模式 Binary有问题

/oracle$vi ftp_ascii.txt
hello word!^M
WINDOWD TO UNIX !^M
TEST FTP Binary;

由此可知我们采用ASCII模式传输文本可以避免传输中的^M问题。
在FlashFXP中可以在菜单
会话->传输模式中 选择ASCII ,BINARY ,自动三种模式

命令行中

ftp> help binary
binary          设置二进制传输类型
ftp> help ascii
ascii           设置 ASCII 传输类型
ftp> ascii
200 Type set to A.
ftp> bin
200 Type set to binary.

FTP中虽然ASCII模式可以避免^M的问题。
但大多数情况还是选择Binary方式,这样可以保证传输的内容不会被改变。尤其是在传输可执行文件时, 大多选用binary方式.
在多数的OS中默认的都是Binary方式, 但在AIX中默认的是ASCII方式.
Tags: ,
 今天在 CentOS 上测试 FTP 服务器验证登录,提示“500 OOPS: cannot change directory:/home/xxx”,不能切换到用户宿主目录?一看到与宿主目录有关,第一反应就是会不会又跟 SELinux 中的策略有关,因为之前测试 Samba 实现“允许用户通过 Windows 客户端访问自己的宿主目录”,就需要先执行 setsebool  -P  samba_enable_home_dirs  on,而且用 getsebool  -a | grep  ftp 也看到了一个“ftp_home_dir --> off”。不过还是先百度了一下,继而在终端下执行:

Linux下安装Python3.3.0 不指定

jed , 2016-5-18 07:17 , 服务器技术 , 评论(0) , 阅读(21016) , Via 本站原创
首先下载源tar包
  可利用linux自带下载工具wget下载,如下所示:
# wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz
  或自己去网上找,这里提供一个最新版的下载链接:http://xiazai.zol.com.cn/detail/33/320958.shtml

  这里我用的是第二种方法,下载的是Python-3.1.2.tar.bz2版本,下载完成后到下载目录下,解压

#!/usr/bin/python
# -*- coding:utf8 -*-

import pymysql

#取得数据库连接对象
conn = pymysql.connect(host=‘127.0.0.1‘,port=3306,user=‘root‘,passwd=‘1234‘,db=‘python‘)
#取得游标对象
cur = conn.cursor()

#插入数据
cur.execute("INSERT INTO student(name,sex,age) VALUES(‘3‘, ‘0‘, ‘45‘)")
conn.commit()
#修改数据
cur.execute("UPDATE student SET age = 90 WHERE id = 2" )
conn.commit()
#删除数据
cur.execute("DELETE FROM student WHERE name = ‘3‘")
conn.commit()

###########################################
#    数据发生改变时一定要conn.commit()    #
###########################################

#查询数据
cur.execute(‘SELECT *FROM student‘)
for r in cur.fetchall():
    print(r)

cur.close()
conn.close()

pip安装使用详解 不指定

jed , 2016-5-17 21:55 , 服务器技术 , 评论(0) , 阅读(13851) , Via 本站原创
pip类似RedHat里面的yum,安装Python包非常方便。本节详细介绍pip的安装、以及使用方法。
1、pip下载安装
1.1 pip下载

# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate

1.2 pip安装

# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install

2. pip使用详解
2.1 pip安装包

# pip install SomePackage
  [...]
  Successfully installed SomePackage

2.2 pip查看已安装的包

# pip show --files SomePackage
  Name: SomePackage
  Version: 1.0
  Location: /my/env/lib/pythonx.x/site-packages
  Files:
   ../somepackage/__init__.py
   [...]

2.3 pip检查哪些包需要更新

# pip list --outdated
  SomePackage (Current: 1.0 Latest: 2.0)

2.4 pip升级包

# pip install --upgrade SomePackage
  [...]
  Found existing installation: SomePackage 1.0
  Uninstalling SomePackage:
    Successfully uninstalled SomePackage
  Running setup.py install for SomePackage
  Successfully installed SomePackage

2.5 pip卸载包

$ pip uninstall SomePackage
  Uninstalling SomePackage:
    /my/env/lib/pythonx.x/site-packages/somepackage
  Proceed (y/n)? y
  Successfully uninstalled SomePackage

3. pip使用实例
3.1 安装redis

# pip install redis

3.2 卸载redis

# pip uninstall redis
Uninstalling redis:
  /usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
  Successfully uninstalled redis

3.3 查看待更新包

pip list --outdate
pygpgme (Current: 0.1 Latest: 0.3)
pycurl (Current: 7.19.0 Latest: 7.19.3.1)
iniparse (Current: 0.3.1 Latest: 0.4)

4. 常见错误
4.1 ImportError No module named setuptools
请参考《ImportError No module named setuptools解决》
5. pip参数解释

# pip --help

Usage:  
  pip <command> [options]

Commands:
  install                     安装包.
  uninstall                   卸载包.
  freeze                      按着一定格式输出已安装包列表
  list                        列出已安装包.
  show                        显示包详细信息.
  search                      搜索包,类似yum里的search.
  wheel                       Build wheels from your requirements.
  zip                         不推荐. Zip individual packages.
  unzip                       不推荐. Unzip individual packages.
  bundle                      不推荐. Create pybundles.
  help                        当前帮助.

General Options:
  -h, --help                  显示帮助.
  -v, --verbose               更多的输出,最多可以使用3次
  -V, --version               现实版本信息然后退出.
  -q, --quiet                 最少的输出.
  --log-file <path>           覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
  --log <path>                不覆盖记录verbose输出的日志.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             连接超时时间 (默认15秒).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               证书.

6. 结束
安装使用一目了然,太简单了。
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]