分享

初见网络爬虫

 _王文波 2017-03-25

Python版本:2.7

Python因其简洁及易读性广泛用于运维、爬虫和数据方面。

导入模块

现在我们开始来编写第一只爬虫,首先需要有Python的环境,参考Python环境搭建及IDE选择进行安装。接下来需要导入相关模块,这只用到Python标准库里的三个模块就可以实现简单的爬虫。urllib模块用来下载图片,urllib2模块用来请求目标网站获取响应的内容,而re模块则是用来匹配字符串,提取有用的数据信息。

import urllib
import urllib2
import re

爬虫思路

爬虫主要是模拟人和浏览器来访问目标网站获取响应内容解析提取相关数据。下面要实现的爬虫的功能是获取百度贴吧楼层里的所有壁纸图片。那么代码需要实现模拟浏览器的行为,也就是访问贴吧地址,获取response内容解析后找到所有的图片地址并将所有图片保存下来。

电脑与服务器

代码实现

先创建Request对象再使用urlopen请求目标网站,虽然可以直接使用urlopen请求目标网站,但是后续无法构造headers信息。read方法读取响应的内容,查看网页源代码是utf-8编码方式为了防止编码问题对读取的内容进行解码操作。因要提取的内容为图片,所有构建正则表达式字符串并使用re.find_all获取所有的图片链接,此时urls对象是列表,for循环遍历所有的链接后用urlretrieve方法下载图片文件。

代码如下:

def download_jpg(url):
'''爬取贴吧的图片并下载到本地'''
request = urllib2.Request(url)

# 创建request对象


response = urllib2.urlopen(request)

# 请求request对象


print response.getcode

# 打印状态码


html = response.read.decode('utf-8')

# 读取相应的内容,decode是根据网页编码方式进行解码


string = r'src='(http://imgsrc\.baidu\.com.+?\.jpg)' pic_ext='jpeg''

# 正则表达式字符串


urls = re.findall(string, html)

# 找出所有符合正则表达式的字符串,返回的是列表


# print jpg_url

x = 0
for url in urls:

# 循环打印所有url


urllib.urlretrieve(url, '%s.jpg' % x)

# 下载所有的图片,注意文件名称带.jpg


x += 1
print urlif __name__ == '__main__':
download_jpg('http://tieba.baidu.com/p/3797994694')

End.

作者:简杨 (中国统计网特邀认证作者)

本文为中国统计网原创文章,需要转载请联系中国统计网(),转载时请注明作者及出处,并保留本文链接。

中国统计网
精品推荐

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多