爬虫基础_01——正则
今天这个爬虫比较简单,爬了一下花瓣网(美女图)的一页的图片。
这里只用了正则,主要思想是:利用正则匹配要爬取的图片url,然后下载图片存到本地;
下面是具体的代码:
# encoding = utf-8
import re
import urllib
import requests#获取图片的url
def getHtml(url):page = urllib.request.urlopen(url)html= page.read()return html
#获取网页的内容
html = getHtml('http://huaban.com/boards/481662/')
#正则匹配
p= r'<img src="([.*\S]*)" width="\d{3}"'
imgurls = re.findall(p, html.decode('utf-8'))#爬取图片
x=1
for imgurl in imgurls:print('http:'+imgurl)urllib.request.urlretrieve('http:'+imgurl, 'F:images/huaban/%s.jpg' % x)print("downloading %d"%x)x +=1
下面是爬到的图片:
因为这个页面的图片是下拉加载的,所以暂时只下载了40张,这个问题还在学习,希望有前辈指导一二;
写的比较糙,有问题麻烦爬友们指出。
这里小弟写的时候有2个小问题:
1、正则的匹配,方式很简单易懂,开始使用可能不太容易匹配成功,要反复多试几次才能熟练掌握;
2、imgurls = re.findall(p, html.decode('utf-8'))
这里如果没有带.decode(‘utf-8’),
就报错TypeError: cannot use a string pattern on a bytes-like object
3、正则的一些基本用法:
1)re.search(pattern, string, flags=0)
在字符串中查找,是否能匹配正则表达式。返回_sre.SRE_Match对象,如果不能匹配返回None。
2)re.match(pattern, string, flags=0)
字符串的开头是否能匹配正则表达式。返回_sre.SRE_Match对象,如果不能匹配返回None。
3)re.split(pattern, string, maxsplit=0)
通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数,maxsplit=1分离一次,默认为0,不限制次数。
4、其他的一些正则的用法总结:
1、正则表达式
2、Python之re模块 —— 正则表达式操作
3、Python正则式的基本用法
爬虫基础_01——正则相关推荐
- Python学习笔记(八)爬虫基础(正则和编解码)
知识点 正则 正则匹配url,引用re库,将需要匹配的字段用(.*?)来匹配,可以匹配任何字符串.如果有换行,可以用如下方式解决: 1. ([\s\S]*?) 2. re.findall(reg,ht ...
- 【杂谈】爬虫基础与快速入门指南
今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目.网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段.因此我们有必要掌握一定的爬虫知识,从而更好的准 ...
- Python应用实战- 爬虫基础入门知识必会
0.爬虫基础流程 把爬虫的过程模块化,基本上可以归纳为以下几个步骤: [√] 分析网页URL:打开你想要爬取数据的网站,然后寻找真实的页面数据URL地址: [√] 请求网页数据:模拟请求网页数据,这里 ...
- Python基础知识回顾及scrapy框架爬虫基础
1.函数 函数参数:必须 默认 关键 可变 函数种类:外部 内部 匿名 lambda 装饰函数:@语法糖 函数总是要返回的 ,若没有return,None总是被返回 2.面向对象: 对象:已存在, ...
- python入门指南txt-【杂谈】爬虫基础与快速入门指南
今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目.网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段.因此我们有必要掌握一定的爬虫知识,从而更好的准 ...
- 爬虫基础篇之IP代理池
代理池介绍 由众多ip组成提供多个稳定可用代理IP的ip池. 当我们做爬虫时,最常见的反爬手段就是IP反爬,当同一个IP访问网站超出频控限制,将会被限制访问,那么代理IP池应运而生.资金充足的情况下个 ...
- 【爬虫基础】Python爬虫
Python爬虫基础 对象序列化 对象序列化 序列化 对象序列化 程序运行时能将内存中的对象.信息直接保存下来的机制,称为对象序列化 对象反序列化 将保存的数据读取并转换为存储区域的对象信息,称之为对 ...
- Python进阶--网络爬虫基础
Python网络爬虫基础 一.网络请求 ProxyHandler处理器(代理): request库 发送get请求: 发送post请求: 使用代理 requests 处理cookie 信息.处理不信任 ...
- python_爬虫基础学习
--王宇阳-根据mooc课程总结记录笔记(Code_boy) Requests库:自动爬去HTML页面.自动网络请求提交 robots.txt:网络爬虫排除标准 Beautiful Soup库:解析H ...
- 小白必学的爬虫基础(二)
爬虫基础知识 网络爬虫 爬虫可以解决的问题 爬虫工程师的进阶之路 搜索引擎 搜索引擎的主要组成 搜索引擎的工作流程 搜索引擎的局限性 聚焦爬虫 爬虫准备工作 robots协议 sitemap–网站地图 ...
最新文章
- 【ARM】ARM汇编程序设计(五) str和ldr
- jaxb 映射 空字段_推土机:将JAXB对象映射到业务/域对象
- [SDOI 2010]外星千足虫
- linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存
- (转)Arcgis for Js之鼠标经过显示对象名的实现
- 平面设计背景素材|打造超酷的炫彩光束光效海报!
- java二级题库软件_无忧考吧二级JAVA超级模拟软件
- 大数据该挖掘,主要挖掘什么,什么是文本挖掘?
- java理论笔试题_Java基础笔试题及答案
- 华为网络设备调试命令(日常总结)
- 百度云BOS上传文件并返回文件地址
- 校招----小米一面面经
- nginx 正向代理http和https
- Excel软件的使用指南
- Unity UGUI图文混排(七) -- 下划线
- ORACLE 取唯一数据
- iOS 内存泄漏检测 Instruments Leaks
- 笔记本电脑常用的快捷键
- edb的安装与使用计统第二次实验
- Webpack基础应用篇 -[9]管理资源(下)