python3进阶学习总结——简单爬虫实现
来源:互联网 发布:淘宝网9.9包邮 编辑:程序博客网 时间:2024/06/08 03:31
从网上爬数据的过程包括:访问页面并获取页面的所有的内容——按照正则表达式筛选并把想要的数据分组——保存数据
①获取页面所有内容
import urllib.requestimport sys#设置访问登录网址weburl="https://www.qiushibaike.com/textnew/page/2/?s=4985583"#设置报头webhead={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0'}#构造request请求req=urllib.request.Request(url=weburl,headers=webhead)#发送request请求并获得响应response=urllib.request.urlopen(req)content = response.read()#改变返回内容的编码type = sys.getfilesystemencoding()content = content.decode(type)
②使用正则表达式
import repattern = re.compile('<a href="/article/([0-9]*)" target="_blank" class=\'contentHerf\' >\n<div class="content">\n*<span>(.*?)</span>\n*</div>',0)#特别说明一点,()表示筛选后的数据,先是用整个正则表达式筛选出数据,然后把()里匹配的内容留下result = re.findall(pattern, content)
这里爬的是糗事百科的段子,网址如下:
https://www.qiushibaike.com/textnew/page/2/?s=4985583
在页面上右键——查看页面源代码,找代码规律,如下图所示:
我需要的是< a > 中的href属性的article后的编码,以及< span >中的中文内容,正则表达式如上代码所示。
测试正则表达式是否正确,可以使用正则表达式在线工具,如http://tool.chinaz.com/regex/
如下图所示
上面输入正则表达式,下面输入内容,如果能匹配的话,下面的内容会变成黄色
③保存数据
def saveTofile(name,content): file=open(name+'.txt', 'w',1000000,'utf-8') file.write(str(content)) file.close()for item in result: saveTofile(item[0], item[1])
这里需要强调一点的是:按照正则表达式筛选回来的数据可以看出数组中的数组
自写案例代码:
import urllib.requestimport sysimport reimport osdef saveTofile(name,content): if not os.path.exists('files'): os.makedirs('files') file=open('files/'+name+'.txt', 'w',1000000,'utf-8') file.write(str(content)) file.close()def getResponse(): #设置访问登录网址 weburl="https://www.qiushibaike.com/textnew/page/2/?s=4985583" #设置报头 webhead={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0'} #构造request请求 req=urllib.request.Request(url=weburl,headers=webhead) #发送request请求并获得响应 response=urllib.request.urlopen(req) content = response.read() #改变返回内容的编码 type = sys.getfilesystemencoding() content = content.decode(type) #<a href="/article/([0-9]*)"[\s\S]* pattern = re.compile('<a href="/article/([0-9]*)" target="_blank" class=\'contentHerf\' >\n<div class="content">\n*<span>(.*?)</span>\n*</div>',0) result = re.findall(pattern, content) for item in result: saveTofile(item[0], item[1]) return "OK"print(getResponse())
阅读全文
1 0
- python3进阶学习总结——简单爬虫实现
- Python3实现简单爬虫
- Python3简单爬虫学习
- python3进阶学习总结——模拟登录
- python3进阶学习总结——安装PyMySQL
- python3实现简单爬虫功能
- python3 爬虫学习——1
- python3 爬虫学习——2
- Python3爬虫学习笔记1.0——什么是爬虫?
- 简单Python3爬虫程序(3)进阶:登录、解压缩、cookies
- 用Python3实现一个简单的爬虫。
- Python3写简单爬虫
- python3 爬虫 简单示例
- Python3爬虫学习笔记0.0——综述
- Python3爬虫学习笔记1.2——模拟登录
- Python3实现简单爬虫及一些编码问题
- Python3.4简单爬虫实现之抓取糗事百科段子
- BeautifulSoup与正则_简单爬虫python3实现
- 定时器-图片或者文字上下播放
- TF/06_Neural_Networks/05 06 07 08
- 终于有自己的博客了
- 【Hibernate】——常用主键生成策略
- HotSpot虚拟机在java堆中的内存使用
- python3进阶学习总结——简单爬虫实现
- 保存缓存
- TCP连接与释放期间的四种定时器
- 查找算法总结(2)--哈希表
- java访问权限和继承性
- POJ 1344 Tree Size Problem 笔记
- jQuery实现清空table表格除首行外的所有数据
- ProcessStartInfo
- php日志!很重要