爬虫初识:
一、 Import re #导入正则表达式模块
二、 re.search(正则表达式,字符串) #从字符串中搜索正则表达式内容
re . compile(正则表达式)findall(字符串) #从字符串中搜索所有满足表达式的内容。
三、 “’ #三引号支持换行 ;\n #换行符;\t #空格符又称制表符
四、 原子符
1、 \w #匹配任意一个字母、数字及下划线
2、 \W #匹配不是字母、数字及下划线的一个字符
3、 \d #匹配任意一个数字(0-9)
4、 \D #匹配任意一个非数字字符
5、 \s #匹配任意一个空白字符
6、 \S #匹配任意一个非空白字符
7、 [……] #用来表示一组字符,单独列出,例如:[akn]匹配a或k或n,仅匹配其中的一个
8、 . #匹配任意一个字符,除了换行符
9、 ^ #匹配字符串的开始位置
10、 $ #匹配字符串的结束位置
11、 * #匹配0次、1次、多次前面的原子
12、 ?#匹配0次或1次前面的原子,懒惰模式
13、 + #匹配1次或多次前面的原子
14、 {n} #匹配n个前面的原子
15、 {n,} #匹配至少n个前面的原子
16、 {n,m}#匹配至少n个至多m个前面的原子
17、 | #或,例如a|b 指a或b
18、 () #用于提取括号中的内容
五、 模式修正符(在不改变正则表达式的同时对表达式做调整修正)
1、 I #用于匹配时使表达式忽略大小写
2、 M #用于进行多行匹配
3、 L #用于本地化识别匹配
4、 U #指根据Unix字符解析字符
5、 S #用于使 . 匹配也包括换行符
6、 模式修正符使用:re.search(正则表达式,字符串,re.模式修正符)
六、 贪婪模式&懒惰模式(贪婪模式指尽可能多的匹配,懒惰模式指尽可能少的匹配)
七、 正则表达式函数:
re.match()#从字符串的首位匹配,诺首位匹配不到即可截止、
re.search()#从字符串中搜索满足匹配要求的内容,但仅返回一个结果、
re.compile()findall()#全局匹配函数、
re.sub()
八、 爬虫小试:
网络爬虫--python笔记1
九、 Urllib基础
1、 urllib模块:urlretrieve()、urlcleanup()、info()、getcode()、geturl()
2、 urlretrieve(),用来获取整个网页,
urllib.request.urlretrieve(爬去的网址,filename=存储爬去网址的目录)
例如:import urllib.request
Urllib.request.urlretrieve(http://www.hellobi.com,filename=” C:/Users/1/Desktop/韦伟pyhton/1.html”) #下载到目标目录,本地目录一律将反斜杠更改为斜杠。
3、 urlcleanup() 用来清除使用urlretrieve()所带来的缓存,以提高运行速度
例如:import urllib.request
Urllib.request.urlretrieve(http://www.hellobi.com,filename=” C:/Users/1/Desktop/韦伟pyhton/1.html”)
Urllib.request.Urlcleanup()
4、 info()用来显示当前环境信息
例如:import urllib.request
File= Urllib.request.urlopen(‘http://www.hellobi.com’)
File.info()
5、 getcode()获取当前网页的状态码 200表示当前网页状态正常,403表示异常
例如:import urllib.request
File= Urllib.request.urlopen(‘http://www.hellobi.com’)
File.getcode()
6、 geturl()获取当前正在爬去的网页网址
例如:import urllib.request
File= Urllib.request.urlopen(‘http://www.hellobi.com’)
File.geturl()
7、 超时设置 timeout
例如:import urllib.request
File= Urllib.request.urlopen(‘http://www.hellobi.com’,timeout=5)#指打开时间超过5s即为失败
8、 自动模拟http请求(post请求、get请求)
一般登录网址会用到post请求,搜索信息会用到get请求
1)Get请求:
示例:
网络爬虫--python笔记1
#原网址:https://www.sogou.com/sie?hdq=AQxRG-0000&query=张&ie=utf8 ,对原网址进行分析,一般?号前的内容要全部留下,然后再获取要搜索的关键词部分;
#如果关键词是汉字,则必须要进行编码转换,转换编码使用quote()方法,如果不是汉字则不用转码;
#urllib.request方法要将https的s去掉,关键词部分用+号链接;
#get请求(使用request.Request()方法发送get请求);
(2)post()请求
示例:

网络爬虫--python笔记1
#原网址:http://www.iqianyue.com/mypost
#网页源码:
网络爬虫--python笔记1
分析网页源码,找到登录登录窗口
#通过parse()方法解析网址,并使用典的方法输入登录信息,
#encode()的作用是编码
十、 爬虫异常处理
1、 常见状态码及其含义
网络爬虫--python笔记1
2、 异常处理中的两个类:URLError、HTTPError;HTTPError是URLError的子类,HTTPError有异常状态码与异常原因,而URLError没有异常状态码。
URLError出现的异常情况:链接不上服务器, 远程的URL不存在、没有网络、触发HTTPError
例子:爬虫异常处理实例(例子为URLError异常处理实例,如果是HTTPError异常处理的话就不用做判断了,因为它可以输出异常编号和错误原因)
(1) import urllib.error 用于处理URL异常的模块
(2) try except 异常捕获 ,注意hasattr()使用方法
网络爬虫--python笔记1
十一、爬虫的浏览器伪装技术
1、 快捷键说明:Ctrl+F 源代码搜索框,F12报头查找
2、 实例:
#原网址:http://china.chinadaily.com.cn/a/201904/06/WS5ca786d9a310e7f8b1574dd6.html
#F12报头:
网络爬虫--python笔记1
#urllib.request.build_opener() 创建opener对象,因为open()不支持添加高级表头
#思路:1.导入模块,2.定义网址,3.定义报头,4.创建build_opener()对象,5.添加报头到创建的build_opener()对象中(urllib.request.build_opener().addheaders=[报头]),6.打开并读取网址(urllib.request.build_opener().open(网址).read()),7.创建目录文件,8.写入模流,9.关闭目录文件
#以下为代码:
网络爬虫--python笔记1
十二、新闻爬虫实战
#urlretrieve()只能将网址下载到本地,不能进行后续的筛选操作,而urlopen()则是先将网址存储在内存中,后续可进行正则表达式筛选。
#urlretrieve()爬去的是整个网页,而urlopen()
#decode()是解码,encode()是编码
网络爬虫--python笔记1

相关文章:

  • 2021-11-17
  • 2021-09-16
  • 2021-12-15
  • 2021-05-02
  • 2021-08-11
  • 2021-07-02
  • 2021-08-03
  • 2021-06-17
猜你喜欢
  • 2021-03-31
  • 2022-01-01
  • 2021-08-11
  • 2021-07-10
  • 2021-12-15
  • 2021-04-12
  • 2021-09-18
相关资源
相似解决方案