python爬虫笔记02

python爬虫笔记02

《精通python网络爬虫》笔记
下面代码大部分来自此书,仅为本人笔记

  • 正则表达式的使用
    re模块的几个方法:(方括号为可选参数)

  • re.search(正则字符串,源字符串,[修正符]) —— 扫描整个字符串进行匹配

  • re.match(正则字符串,源字符串,[修正符]) —— 从源字符串开始位置匹配一个
  • re.match(~~~).span() 只保留匹配匹配成功的位置
  • **全局匹配:**pattern = re.compile(正则字符串) result = pattern.findall(源字符串) 匹配源字符串的全部符合的内容,返回一个列表
  • 替换: re.sub(正则,要替换成的字符串,源字符串,[最大替换次数])

什么是Cooking

比如仅适用HTTP协议的话,登录成功一个网站时,当我们访问该网站的其他网页,登录状态会消失。所以需要将对应的会话信息保存下来:通过Cooking和Session保存,访问同一个网站其他页面时会从Cooking读取信息。。。。。

示例代码一(未使用Cooking处理)



#Cooking
import urllib.request
import urllib.parse

#真实的登录地址
url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LeSWO"
postdata = urllib.parse.urlencode({
    "username":"zran***",
    "password":"*****"  #用户名和密码
}).encode('utf-8') #使用urlencode编码处理后,再使用encode()编码utf-8

req = urllib.request.Request(url,postdata)  #构建Request对象
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0')

data = urllib.request.urlopen(req).read() #登录并爬取网页
fh = open("F:/htmls/8.html","wb")
fh.write(data)
fh.close()

#设置要爬取该网站下的其他网址,不进行Cooking处理登录状态会消失
#下面爬取的网页未登录
url2 = "http://bbs.chinaunix.net"
req2 = urllib.request.Request(url2,postdata)
req2.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0')

data2 = urllib.request.urlopen(req2).read()
fh2 = open("F:/htmls/9.html","wb")
fh2.write(data2)
fh2.close()

示例代码二(使用Cooking):
一般思路:

  1. 导入模块http.cookiejar
  2. 使用http.cookiejar.CookieJar()创建CookirJar对象
  3. 使用HTTPCookieProcessor创建cookie处理器,并以其未参数构建opener对象
  4. 创建默认的opener对象

#Cooking
import urllib.request
import urllib.parse
import http.cookiejar

#真实的登录地址
url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LeSWO"
postdata = urllib.parse.urlencode({
    "username":"zran***",
    "password":"******"
}).encode('utf-8') #使用urlencode编码处理后,再使用encode()编码utf-8

req = urllib.request.Request(url,postdata)  #构建Request对象
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0')

#使用http.cookiejar.CookieJar创建CookirJar对象
cjar = http.cookiejar.CookieJar()
#使用HTTPCookieProcessor创建cookie处理器,并以其未参数构建opener对象
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))
#将opener安装全局
urllib.request.install_opener(opener)
file =opener.open(req)

data = file.read() #登录并爬取网页
fh = open("F:/htmls/8.html","wb")
fh.write(data)
fh.close()

#设置要爬取该网站下的其他网址,不进行Cooking处理登录状态会消失
#下面爬取的网页已登录
url2 = "http://bbs.chinaunix.net"
data2 = urllib.request.urlopen(url2).read()
fh2 = open("F:/htmls/9.html","wb")
fh2.write(data2)
fh2.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值