其他测试框架 Python 网络爬虫 (一)

刘津嘉 · April 13, 2016 · Last by MagicCube replied at February 01, 2018 · 4999 hits

title: Python网络爬虫 (一)
date: 2016-04-13 12:47:44

tags: Python

< Hi , 大家好,我是Raymond 。 由于最近一段时间比较忙,换了新的工作环境,很久没有来分享技术文章 , 不知道大家有没有捉急 >

今天给大家带来的,是Python的网络爬虫实现(不包含开源框架,自己造轮子系列)

好了 首先,我们先来了解一下, 什么是爬虫

什么是网络爬虫?

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

传送门 :网络爬虫

网络爬虫能给我们在日常生活带来什么?

  • 搜索引擎的基础应用
  • 抓取大数据的一种手段
  • 网页下载器
  • 网店秒杀

看来爬虫能给我们带来大量的有效数据及和用途呢 , 当大家都在拿着手机、对着电脑,等着整点秒杀的时候,你却躺在床上,看着电视喝着咖啡等着你的爬虫帮你抢回秒杀的产品,是不是想想都很开心呢?那么,快点开始吧,来实现我们的第一个基于Python实现的爬虫

用Python 实现你人生中的第一个爬虫程序

首先,大家需要了解一下python中常用的爬虫模块 包含:urllib2、urllib3、requests、BeautifulSoup 、 re等
本章,我们先来介绍requests模块的简单使用,后续章节,我们会深入讲解其他爬虫模块

如果你还没有接触过python,没有关系 python-requests ,可以查看文档后,再继续学习以下内容

import requests     # 导入requests模块

request_url = 'http://testerhome.com' # 请求的url是 TesterHome的网站主页
response = requests.get(request_url).text # 请求TesterHome,并获取返回值
print(response) # 打印返回结果

WoW! 人生第一个爬虫,就这样诞生了,Python的爬虫代码看起来是不是很简洁,很有层次感呢?

首先! 我们恭喜一下自己,你的爬虫成功的把TesterHome的主页html抓下来,并返回给你,你成功了。(如果返回错误,请自行对比代码)

那么问题随之而来, 竟然返回了一个html ,这是什么鬼,我应该怎么样才能把这个html中我需要的内容获取出来?

容我卖个关子,今天就讲到这里, 下一张,我们会开始讲html的解析和json的解析(接口测试包含,简单讲解一下)

留一部分练习内容:

  • 尝试获取Testerhome的相关文章
  • 尝试获取任意一篇知乎的文章

如果遇到问题,可以在TesterHome的官方测试群@BJ-行者

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 44 条回复 时间 点赞

是准备用urllib还是直接用scrapy啊

#1楼 @jphtmt 不用框架, 自己写轮子,后续讲分布式,这部分其实主要的用意是让大家写出pythinic的代码 , 熟悉并习惯python的代码形式

#2楼 @raymond 那解析呢,用bs4?这些天一直在尝试写一个爬虫,卡在验证码了

#3楼 @jphtmt 验证码部分现在通常的做法是将验证码拉回本地,手动输入,如果你想程序自动识别图像,这个太困难了

#4楼 @raymond 我就是拉回本地的, 但是手动输入后就出了问题

#5楼 @jphtmt 可否发给我看一下

#6楼 @raymond 代码还在远程服务器上,得回去找找,希望能写个处理验证码的例子,嘿嘿

#7楼 @jphtmt 下一章会放两部分的爬虫内容, 一个是html的简单解析,第二部分,是应用的模拟登录, 你说的内容, 可能会在第三章中放出来, 结合第二章的内容, 用python实现登陆TesterHome

#8楼 @raymond 好,我之前尝试的是豆瓣,我找时间尝试下登录testerhome试试

感谢楼主的技术分享,小白第一步就卡住了,py2.7并不包含这些模块,可否另开一个传送门引导?

刘津嘉 #12 · April 13, 2016 作者

#9楼 @jphtmt TesterHome的登陆, 有_xsrf 验证 包含了bs4的解析模块还有你提到的验证码

#12楼 @raymond 嗯, 我看到了,知乎也采用了_xsrf验证,每次抓取_xsrf值就好了吧

#10楼 @jamesparagon requests需要安装,pip一下吧

刘津嘉 #15 · April 13, 2016 作者

#13楼 @jphtmt 对 每次登陆获取一次就好了。前两天我还在群里说。。TesterHome的登陆验证方式,和知乎很相似啊

成功了,不过小白作死尝试了一下www.baidu.com 电脑直接蓝屏了

给煎饼怂恿下这么快就出来了,把一系列的都写出来吧,看样子不错

刘津嘉 #18 · April 13, 2016 作者

#17楼 @darker50 哈哈, 好的, 得向煎饼多学习 , 这套系列 预计是分5章写完, 初级的python爬虫造轮子系列

你这文章这么短, 差评啊.

刘津嘉 #21 · April 13, 2016 作者

#20楼 @seveniruby 不短点留点神秘,怎么拉起人的好奇心呢

#21楼 @raymond 作业已完成 期待老师的新课

#17楼 @darker50 哈哈,幸福

坐等连载~

刘津嘉 #25 · April 13, 2016 作者

#24楼 @jianjianjianbing 嘿嘿。这部分还是比较简单的,后面如果大家都感兴趣,再开一片多线程消息队列的

#23楼 @jianjianjianbing 下次看你分享,你懂的好像更多。

已关注大神,默默等待更新

期待更新,一直想尝试爬虫

慕课网有nodejs写的爬虫

期待后续内容

可以多个合在一起

刘津嘉 #32 · April 15, 2016 作者

#31楼 @monkey 太长了。5-5章节

不错,可以试试!

—— 来自TesterHome官方 安卓客户端

这个可以在python3下运行吗

刘津嘉 #35 · April 18, 2016 作者

#34楼 @m58944869 是的呢, 这是python3

感觉刚开始接触用urllib2 跟py2比较好

刘津嘉 #37 · April 19, 2016 作者

#36楼 @fing520 urllib有好有坏吧, 好的地方是对爬虫及http原理解释的足够详细, 不好的地方是太唠叨了。。。

下一篇什么时候出?坐等

最后输出,报这样的错:File "", line 1, in <mo
UnicodeEncodeError: 'gbk' codec
5: illegal multibyte sequence

刘津嘉 [Topic was deleted] 中提及了此贴 08 Oct 16:37

#36楼 @fing520 requests模块非常简单易用,想快速出东西就用它

给楼主赞一个

刘津嘉 Python 网络爬虫 (二) 中提及了此贴 11 Apr 08:15
Huhy_test 回复

我也报这样的错了,但是文件开头有写

# -*- coding: utf8 -*-

现在你解决了吗?

Huhy_test 回复

我已经解决了。网上找的问题链接
response得到的Unicode的字符,需要print出来的话,由于Windows下的cmd是GBK编码的(可以在cmd中点击菜单查看属性),所以需要先将Unicode的response先编码为GBK,然后再在cmd中显示出来,然后由于response中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”。

添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。
最终代码:

# -*- coding: utf8 -*-
import requests

request_url = 'https://testerhome.com/topics/4637'
response = requests.get(request_url).text

print(response.encode("GBK",'ignore'))#result


报ImportError: No module named 'urllib3.exceptions',求解

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up