Python 网络爬虫(错误之处,敬请斧正)

很久没有用python了,心血来潮写一下自己对于学习python获取网络数据的总结。

工具

python版本: 3.5 
IDE : pycharm 5.0.4 

要用到的包可以用pycharm下载:
File->Default Settings->Default Project->Project Interpreter
选择python版本并点右边的加号安装想要的包

这里写图片描述

这里以爬取图片为例:

获取目的网站的信息:

#coding=utf-8    //中文编码
import urllib2    
url = "http://tieba.baidu.com/p/2738151262"

def getHtml():
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    html = response.read()
    return html

urllib2 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:

  urllib2.urlopen()方法用于打开一个URL地址。

  read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。返回结果。

利用正则表达式对爬取的网页进行筛选

正则表达式的知识

审查图片元素,观察我们要获取的图片对应的网页代码是什么样的!!!
这里写图片描述

添加代码

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    return imglist      
  • re.compile() 可以把正则表达式编译成一个正则表达式对象.

  • re.findall() 方法读取html 中包含 imgre(正则表达式)的数据。

  • 运行脚本将得到整个页面中包含图片的URL地址。

将页面筛选的数据保存到本地

使用for循环

修改代码如下:

#coding=utf-8
import urllib2    
url = "http://tieba.baidu.com/p/2738151262"

def getHtml():
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    html = response.read()
    return html

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'%s.jpg' % x)
        x+=1

if __name__ == "__main__":
    html = getHtml()
    getImg(html)

或者

//注意aw与w的区别
with open('out.txt','aw') as file:
            file.write('%s\n' % imgurl)
 //图片对应的url
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值