Python--正则表达式/单线程网络爬虫

来源:互联网 发布:可靠性工程师 知乎 编辑:程序博客网 时间:2024/06/11 12:12

正则表达式

  • 常用符号:点号,星号,问号与括号
  • 常用方法:findall,search,sub
  • 常用技巧:

    常用符号

     . :匹配任意字符,换行符\n除外
     * :匹配前一个字符0次或无限次
     ? :匹配前一个字符0次或1次
     .* :贪心算法
     .*? :非贪心算法
     () :括号内的数据会作为结果返回

    常用方法

     findall:匹配所有符合规律的内容(遍历所有文本),返回包括结果的列表
     search:匹配并提取第一个符合规律的内容(遍历到一个即可),返回一个正则表达式的对象
     sub:替换符合规律的内容,返回替换后的值

#sub的使用举例s = '123rrrrr123'output = re.sub('123(.*?)123','123%d123'%789,s)print output输出: 123789123

####常用技巧

  • import re
  • from re import*
  • from re import findall,search,sub,S
  • 使用\d+匹配纯数字
#匹配数字a = 'asdfasf1234567fasd555fas'b = re.findall('(\d+)',a)print b输出:['1234567', '555']

正则表达式应用

-另需要通过 pip 安装 requests 模块,不然无法使用requests方法!

#-*-coding:utf8-*-import reimport requests#读取源代码文件f = open('source.txt','r')#打开一个TXT文本html = f.read()#将读取的文本赋给变量htmlf.close()#关闭文本#匹配图片网址pic_url = re.findall('img src="(.*?)" class="lessonimg"',html,re.S)i = 0for each in pic_url:#打开文件操作,写文件流程    print 'now downloading:' + each    pic = requests.get(each)    fp = open('pic\\' + str(i) + '.jpg','wb')#将图片保存至本地目录“pic”文件夹,并添加名字与后缀    fp.write(pic.content)    fp.close()    i += 1

正则表达式与单线程网络爬虫应用

-自动下载的图片为程序员光棍节福利!

#-*—coding:utf8-*-import requestsimport re#下面三行是编码转换的功能,大家现在不用关心。import sysreload(sys)sys.setdefaultencoding("utf-8")hea = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'}si = 0for i in range(2180,2206):    my_url = 'http://jandan.net/ooxx/page-2205#comments'    url = re.sub('page-(.*?)#comments','page-%d#comments'%i,my_url)    html = requests.get(url,headers = hea)    html.encoding = 'utf-8' #这一行是将编码转为utf-8否则中文会显示乱码。    target = re.findall('<br /><img src="(.*?)" /></p>',html.text)    for each in target:        print each        print 'now downloading:' + each        pic = requests.get(each)        fp = open('pic\\' + str(si) + '.jpg', 'wb')        fp.write(pic.content)        fp.close()        si += 1
0 0
原创粉丝点击