博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬取个人信息
阅读量:3951 次
发布时间:2019-05-24

本文共 3717 字,大约阅读时间需要 12 分钟。

功能是爬取制定网站的个人信息。属于硬生生爬的那种。正则还不会。等我的书回来好好看一下,觉得爬虫很帅,还要学习有灵魂的爬。

在这里插入图片描述

# -*- coding: utf-8 -*-import urllibimport urllib2import re# ----------- 回调函数进度 ------------#def schedule(a, b, c):    pre = 100.0 * a * b / c    if pre > 100:        pre = 100    print '%.2f%%' % pre# ----------- 处理页面上的各种标签 -----------class HTML_Tool:    # 用非 贪婪模式 匹配 \t 或者 \n 或者 空格 或者 超链接 或者 图片    BgnCharToNoneRex = re.compile("(\t|\n| |
|
)") # 用非 贪婪模式 匹配 任意<>标签 EndCharToNoneRex = re.compile("<.*?>") # 用非 贪婪模式 匹配 任意

标签 BgnPartRex = re.compile("

") CharToNewLineRex = re.compile("(
|

||
|
)") CharToNextTabRex = re.compile("") # 将一些html的符号实体转变为原始符号 replaceTab = [("<", "<"), (">", ">"), ("&", "&"), ("&", "\""), (" ", " ")] def Replace_Char(self, x): x = self.BgnCharToNoneRex.sub("", x) x = self.BgnPartRex.sub("\n ", x) x = self.CharToNewLineRex.sub("\n", x) x = self.CharToNextTabRex.sub("\t", x) x = self.EndCharToNoneRex.sub("", x) for t in self.replaceTab: x = x.replace(t[0], t[1]) return xclass xq_Spider: # 申明相关的属性 def __init__(self, url): self.myUrl = url self.datas = [] self.purl = [] self.gurl = [] self.myTool = HTML_Tool() print u'已经启动爬虫,咔嚓咔嚓' # 初始化加载页面并将其转码储存 def xq_info(self): # 读取页面的原始信息并将其从utf-8转码 myPage = urllib2.urlopen(self.myUrl).read().decode("utf-8") # 发布内容一共有多少页 endPage = 2 # 标题 title = 'info' print u'文件名:' + title # 获取最终的数据 self.save_data(self.myUrl, title, endPage) # 用来存储发布的内容 def save_data(self, url, title, endPage): # 加载页面数据到数组中 self.get_data(url, endPage) print 'get data done' # 打开本地文件 f = open(title + '.txt', 'a+') f.writelines(self.datas) f.close() self.download_pic() print u'爬虫报告:文件已下载到本地并打包成txt文件' print u'请按任意键退出...' raw_input() # 获取页面源码并将其存储到数组中 def get_data(self, url, endPage): url = url + '&page=' for i in range(1, endPage + 1): print u'爬虫报告:爬虫%d页正在加载中...' % i myPage = urllib2.urlopen(url + str(i)).read() # 将myPage中的html代码中所有url处理并存储到gurl里面 self.deal_url(myPage.decode('utf-8')) print 'url deal done' chinaurl = "http://www.china-seek.net/seek/" for i in self.gurl: infopage = urllib2.urlopen(chinaurl + str(i)).read() self.deal_data(infopage.decode('utf-8')) print 'data deal done' # 将编号从页面代码中抠出来 def deal_url(self, myPage): myItems = re.findall('view/\?id=\d+', myPage) myPhoto = re.findall('photo/\d+.gif', myPage) for item in myItems: urlid = self.myTool.Replace_Char(item.replace("\n", "").encode('utf-8')) self.gurl.append(urlid + '\n') for item in myPhoto: urlpic = self.myTool.Replace_Char(item.replace("\n", "").encode('utf-8')) self.purl.append(urlpic + '\n') #从各个编号获取url def deal_data(self, infopage): infoItems = re.findall('class="r">(.*?)', infopage, re.S) for item in infoItems: data = self.myTool.Replace_Char(item.replace("\n", "").encode('utf-8')) self.datas.append(data + '\n') def download_pic(self): chinaurl = "http://www.china-seek.net/seek/" picPath = './' for i in self.purl: picPage = urllib2.urlopen(chinaurl + str(i)).read() print 'fsfsfdsfsdfdsfsdfsd' print picPage pic = urllib.urlretrieve(picPage, picPath, schedule) # 打开本地文件 f = open(i + '.txt', 'a+') f.writelines(self.pic) f.close()

转载地址:http://huwzi.baihongyu.com/

你可能感兴趣的文章
卓越领导看过程
查看>>
领导力与各种循环挑战
查看>>
达成谈判协议 - 避免操之过急
查看>>
销售人说话“十大忌”
查看>>
营销中的“战略非对称”
查看>>
android 如何开关Mediatek开发的Feature
查看>>
Android电话功能各部分深入探讨
查看>>
Android应用技巧总结
查看>>
Android创建sdcard详细图解
查看>>
Android开发:如何实现TCP和UDP传输
查看>>
Android电源管理相关应用技巧分享
查看>>
Android录音失真具体解决方案
查看>>
Android根文件系统相关应用介绍
查看>>
Android文件系统深入剖析
查看>>
Android判断网络状态方法详解
查看>>
在Android上实现Junit单元测试的四部曲
查看>>
有效控制Android应用程序的耗电量
查看>>
Android术语列表概览
查看>>
全方位解读Android多媒体框架源码
查看>>
Android音乐编程的管理音频硬件
查看>>