美文网首页我爱编程
基于 Python2.7 的简易爬虫入门

基于 Python2.7 的简易爬虫入门

作者: evilgiven | 来源:发表于2017-12-22 14:05 被阅读0次

0 - 环境配置

首先我们需要下载 Python2.7, 直接在官网获取就行了

image.png

然后为了后面省事你需要一个 pip
打开 cmd 切换到 Python27/Scripts
输入 esay_install pip 安装 pip


image.png

输入 pip 看到类似这样的画面就说明安装成功了


image.png

我们需要一个第三方 requests 来使用 get 和 post 方法获取和传输数据

pip install requests

1 - 简单的获取和发送数据

  • get 方法

在 cmd 中输入Python 或者打开 Python IDLE 输入

import requests
html = requests.get(“”https://www.python.org/“)
print html.content

然后你就能看到(看不到的话检查一下你联没联网

image.png

是不是看上去很熟悉, 这就是使用 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
image.png

再把 url 从每一条中提取出来,就获得了网页中所有的链接,一个简单的爬虫差不多就是这个样子了

  • 使用 BeautiSoup 和 lxml 解析引擎

这都是第三方库,需要使使用 pip 获取

3 - demo

通过以上方法,使用 get 和 post 方法获取和向服务器发送数据,再从返回的数据中寻找自己所需要的信息,一个简单的爬虫就完成了,再配合使用 cookie 等就可以抓取到大部分静态网页
对于动态网页比如使用 Ajax 异步加载等技术的,可以使用 selenium 这样的自动化测试工具来完全模拟浏览器行为抓取数据

下面给出一个编写简单的抓取静态网页数据爬虫的示例
Python 爬取 全民K歌 个人主页全部歌曲和MV

相关文章

网友评论

    本文标题:基于 Python2.7 的简易爬虫入门

    本文链接:https://www.haomeiwen.com/subject/wtetgxtx.html