0 - 环境配置
首先我们需要下载 Python2.7, 直接在官网获取就行了
然后为了后面省事你需要一个 pip
打开 cmd 切换到 Python27/Scripts
输入 esay_install pip 安装 pip
输入 pip 看到类似这样的画面就说明安装成功了
我们需要一个第三方 requests 来使用 get 和 post 方法获取和传输数据
pip install requests
1 - 简单的获取和发送数据
-
get 方法
在 cmd 中输入Python 或者打开 Python IDLE 输入
import requests
html = requests.get(“”https://www.python.org/“)
print html.content
然后你就能看到(看不到的话检查一下你联没联网
是不是看上去很熟悉, 这就是使用 get 方法获取到的网页的 html
使用 get 方法向服务器发送数据的话, 直接构造 url 就行了
以 baidu 为例,要向服务器发送搜索的关键字 poi
那么构造的 url 为
https://www.baidu.com/s?wd=poi
wd 即为 baidu 服务器获取搜索关键字的字段
-
post 方法
使用 post 方法向服务器发送编码为表单形式的数据,使用requests也能很方便地实现
首先你需要构造一个数据字典,比如:
data = {
'USERNAME': username,
'PASSWORD': password,
'RANDOMCODE': verifycode
}
然后使用 requests.post 向服务器发送数据
html = requests.post("http://", data=data)
相比 get 方法这里多了一个参数 data,requests会自动把你的数据字典构造为表单形式,这样就可以向网站发送表单了
2 - 分析网页获取数据
-
简单地查找字符串
Python 自带了正则表达式引擎,在 Python 中引入模块 re 即可
import re
还是以之前的 baidu 为例,先使用 get 方法获取网页
html = requests.get("http://www.baidu.com/s?wd=poi")
接下来使用正则表达式匹配出获取到的网页中所有的链接
temp = re.findall(r"<a.*?href=\"http.*?<\/a>", html.content, re.I)
这样就获得了所有的含 url 的超链接标签
使用遍历 temp 输出每一条数据就能看到匹配到的字符串
for item in temp:
print item
再把 url 从每一条中提取出来,就获得了网页中所有的链接,一个简单的爬虫差不多就是这个样子了
-
使用 BeautiSoup 和 lxml 解析引擎
这都是第三方库,需要使使用 pip 获取
3 - demo
通过以上方法,使用 get 和 post 方法获取和向服务器发送数据,再从返回的数据中寻找自己所需要的信息,一个简单的爬虫就完成了,再配合使用 cookie 等就可以抓取到大部分静态网页
对于动态网页比如使用 Ajax 异步加载等技术的,可以使用 selenium 这样的自动化测试工具来完全模拟浏览器行为抓取数据
下面给出一个编写简单的抓取静态网页数据爬虫的示例
Python 爬取 全民K歌 个人主页全部歌曲和MV