python学习笔记(三)

爬虫: URL的一般格式: protocol://hostname[:port]/path/[;parameters] [?query]#fragment urllib模块 实例: import urllib.request >>> respons = urllib.request.urlopen(“http://www.fishc.com”)//类似文件对象 >>> html = respons.read() //respons.info() respons.geturl() respons.getcode() >>> html = html.decode(‘utf-8’) >>> print(html) …….


>

GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据

urlopen(url,data=None,header={},,)data没有默认为get方法,有的话为post方法

简单的爬虫翻译:
data格式化: data = urllib.parse.urlencode(data)encode(‘…’)
response = urllib.request.urlopen(url,data)
html = response.read().decode(‘utf-8’)
target = json.loads(html)

隐藏:
更改header里的User-Agent信息
req = urllib.request.Request(url,data)
req.add_header(‘User-Agent’,’Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36’)
response = urllib.request.urlopen(req)

休眠一段时间
time.sleep()
使用代理
这里写图片描述
爬取网址图片:
查找页码:
a = html.find(‘page-numbers current’) + 22
b = html.find(‘<’,a)

return (html[a:b])

查找图片网址:
a = html.find(‘img src=’)
while a != -1:
b = html.find(‘.jpg’,a,a+255)
if b != -1:
img_addrs.append(html[a+9:b+4])
else:
b = a+9

    a = html.find('img src=',b)

保存图片:
for each in img_addrs:
filename = each.split(‘/’)[-1]
with open(filename,’wb’) as f:
img = url_open(each)
f.write(img)

正则表达式:
import re
re.search(target,subject)

xxx{0,3}匹配0到3次

匹配0-255的数字
r’[01]\d\d|2[0-4]\d|25[0-5]’

匹配ip地址:
r’(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]).){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])’

r’(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]).){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5]))’
元字符:
这里写图片描述
. 匹配除换行符外任何符号
A|B匹配模式A或者模式B
^A 从开始位置匹配A
B$ 从结束位置匹配B

\ 将一个普通字符变为特殊符号
解除元字符的特殊功能
\1 数字1-99匹配序号组的的模式(A)\1 == (A)(A)
\060 代表八进制060所表示的ascii值对应的值 \060 ==0

[A] 代表一个字符类,在括号中的所有元字符失去特殊功能(除去- \ ^)
[^A]表示不匹配A

{M,N}匹配M次到N次
* 匹配0次或多次
+ 匹配1次或多次
? 匹配0次或1次

贪婪模式(默认):匹配尽可能多的字符<.+>
非贪婪模式:<.+?>第一次匹配到>就停下来

特殊字符:
这里写图片描述
\A 基本等同^
\Z 基本等同$

\b 匹配单词边界 例如\bmile\b 不匹配smile
\B 匹配非单词边界

\d 匹配数字
\D 匹配非数字

\s 匹配空白字符:\t \n \r \f换页 \v垂直制表
\S 相反

\w 匹配任何unicode的单词字符 如果设置re.ASCII 只匹配[a-zA-Z0-9]
\W 相反
这里写图片描述
编译正则表达式:
pat = re.compile(r’xxxx’)
pat.search(html)
这里写图片描述
这里写图片描述
urllib.request.urlretrieve(url,file,None)获取url内容并下载在file中

match = re.search(A,B)
match.group()全部匹配字符串 其他子组从序号0开始,右边开始第一个括号开始的子组

match = re.findall(p,html)
返回一个子组的元组
?:非捕获组

网页访问的异常:
import urllib.error

urllib.error.URLError as e: e.reason

urllib.error.HTTPError as e: e.code返回错误码
这里写图片描述
这里写图片描述

这里写图片描述

本来该写点Scrapy的用法的,可惜倒腾了一天没装成功,等以后装好再写吧…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值