python--(爬虫-re模块)

  1. re模块四大核心功能:
  2.  
  3. 1.findall 查找所有,返回list
  1. import re
  2. lst = re.findall("m", "mai le fo len, mai ni mei!")
  3. print(lst) # ['m', 'm', 'm']
  4.  
  5. lst = re.findall(r"\d+", "5点之前. 你要给我5000")
  6. print(lst) # ['5' '5000']
  1. 2.search 会进行匹配,但如果匹配到了第一个结果,就会返回这个结果,
    如果匹配不上search返回的则是None
  1. import re
  2. ret = re.search(r'\d', '5点之前. 你要给我5000万').group()
  3. print(ret) #
  1.  
  2. 3. match 只能从字符串的开头进⾏匹配
  1. import re
  2. ret = re.match('a', 'abc').group()
  3. print(ret) # a
  1.  
  2. 4. finditer findall差不多. 只不过这时返回的是迭代器
  1. import re
  2. it = re.finditer("m", "mai le fo len, mai ni mei!")
  3. for el in it:
  4. print(el.group()) # 依然需要分组

    5.re模块相关操作

  1. import re
  2.  
  3. # split 切割. 按照正则切割.
  4. # lst = re.split(r"[ab]", "abcdefghahahehedebade")
  5. # print(lst)
  6.  
  7. # sub 替换.
  8. # result = re.sub("250", "__sb__", "alex250taibai250taihei250ritian250liuwei")
  9. # print(result)
  10.  
  11. # result = re.subn("250", "__sb__", "alex250taibai250taihei250ritian250liuwei")
  12. # print(result)
  13.  
  14. # obj = re.compile(r"\d+")
  15. # lst = obj.findall("大阳哥昨天赚了5000块")
  16. # lst2 = obj.findall("银行流水5000, 花了6000")
  17. # print(lst)
  18. # print(lst2)
  19.  
  20. # obj = re.compile(r"(?P<id>\d+)(?P<zimu>e{3})")
  21. # ret = obj.search("abcdefg123456eeeee") # ((123456)(eee))
  22. # print(ret.group())
  23. # print(ret.group("id"))
  24. # print(ret.group("zimu"))
  25.  
  26. # ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
  27. # print(ret) # 这是因为findall会优先把匹配结果组⾥内容返回,如果想要匹配结果,取消权限即可
  28. # ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com') # ?: 当前的()不分组
  29. # print(ret) # ['www.oldboy.com']
  30.  
  31. # ret=re.split("sb","alexsbwusirsbtaibaisbliuwei")
  32. # print(ret)

爬虫重点:爬取豆瓣网站相关信息===>

  1. import re
  2. from urllib.request import urlopen # 打开一个链接. 读取源代码
  3. import ssl
  4. # 干掉数字签名证书
  5. ssl._create_default_https_context = ssl._create_unverified_context
  6.  
  7. def getPage(url):
  8. response = urlopen(url) # 和网页链接
  9. return response.read().decode('utf-8') # 返回正常的页面源代码. 一大堆HTML
  10. def parsePage(s): # s 是页面源代码
  11. ret = re.findall('<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?'+
  12. '<span class="title">(?P<title>.*?)</span>'+
  13. '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>'+
  14. '(?P<comment_num>.*?)评价</span>', s, re.S)
  15. return ret # id,title, rating_num, comment_num
  16.  
  17. def main(num):
  18. url = 'https://movie.douban.com/top250?start=%s&filter=' % num
  19. response_html = getPage(url) # response_html是页面源代码
  20. ret = parsePage(response_html)
  21. print(ret) # id,title, rating_num, comment_num
  22.  
  23. count = 0
  24. for i in range(10): #
  25. main(count)
  26. count += 25

方法一

  1. import re
  2. from urllib.request import urlopen # 打开一个链接. 读取源代码
  3. import ssl
  4. # 干掉数字签名证书
  5. ssl._create_default_https_context = ssl._create_unverified_context
  6.  
  7. def getPage(url):
  8. response = urlopen(url) # 和网页链接
  9. return response.read().decode('utf-8') # 返回正常的页面源代码. 一大堆HTML
  10.  
  11. def parsePage(s):
  12. com = re.compile(
  13. '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?' +
  14. '<span class="title">(?P<title>.*?)</span>' +
  15. '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>' +
  16. '(?P<comment_num>.*?)评价</span>', re.S)
  17. ret = com.finditer(s)
  18. for i in ret:
  19. yield {
  20. "id": i.group("id"),
  21. "title": i.group("title"),
  22. "rating_num": i.group("rating_num"),
  23. "comment_num": i.group("comment_num"),
  24. }
  25.  
  26. def main(num):
  27. url = 'https://movie.douban.com/top250?start=%s&filter='
  28. response_html = getPage(url)
  29. print(response_html)
  30. ret = parsePage(response_html)
  31. # print(ret)
  32. f = open("move_info7", "a", encoding="utf8")
  33. for obj in ret:
  34. print(obj)
  35. data = str(obj)
  36. f.write(data + "\n")
  37.  
  38. count = 0
  39. for i in range(10): #
  40. main(count)
  41. count += 25

爬取并写入文件

python--(爬虫-re模块)的更多相关文章

  1. python爬虫 urllib模块url编码处理

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...

  2. python 爬虫 urllib模块 目录

    python 爬虫 urllib模块介绍 python 爬虫 urllib模块 url编码处理 python 爬虫 urllib模块 反爬虫机制UA python 爬虫 urllib模块 发起post ...

  3. Python爬虫urllib模块

    Python爬虫练习(urllib模块) 关注公众号"轻松学编程"了解更多. 1.获取百度首页数据 流程:a.设置请求地址 b.设置请求时间 c.获取响应(对响应进行解码) ''' ...

  4. python爬虫-urllib模块

    urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...

  5. Python爬虫——selenium模块

    selenium模块介绍 selenium最初是一个测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览 ...

  6. python 爬虫 urllib模块介绍

    一.urllib库 概念:urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urll ...

  7. python爬虫--selenium模块.上来自己动!

    selenium 基本操作 from selenium import webdriver from time import sleep #实例化一个浏览器对象 bro = webdriver.Chro ...

  8. python 爬虫 urllib模块 反爬虫机制UA

    方法: 使用urlencode函数 urllib.request.urlopen() import urllib.request import urllib.parse url = 'https:// ...

  9. python爬虫-smtplib模块发送邮件

    1.代码如下: import smtplib from email.message from EmailMessage # smtplib模块负责发送邮件服务 # email.message模块负责构 ...

  10. Python爬虫常用模块,BeautifulSoup笔记

    import urllib import urllib.request as request import re from bs4 import * #url = 'http://zh.house.q ...

随机推荐

  1. CentOS6.8安装

        VMware下CentOS 6.8安装配置 简述 Linux的安装方法有很多种,下面,我们主要以镜像安装为例,介绍CentOS的安装过程及相关的参数设置,详细步骤如下. CentOS安装配置 ...

  2. Linux 程序包管理-YUM

    前端工具YUM管理程序包:  rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...

  3. omap 移植qt4.7.0

    准备: 1.Qt源码包 qt-everywhere-opensource-src-4.7.0.tar.gz 2.交叉编译器 arm-eabi-4.4.0.tar.bz2 3.触摸屏校验工具:tslib ...

  4. 菜鸟的mongoDB学习---(六)MongoDB 索引

    MongoDB 索引 ps:大概有半个月木有更新了,因为前一阶段的出差和这几天突然来的项目.导致上网时间急剧降低,实在是sorry,以后预计会好一点. 索引通常可以极大的提高查询的效率.假设没有索引. ...

  5. hdu 1165 Eddy&#39;s research II(数学题,递推)

    // Eddy 继续 Problem Description As is known, Ackermann function plays an important role in the sphere ...

  6. mysql安装出错cannot create windows service for mysql.error:0

    配置时最后一步出现不能启动mysql 解决成功的办法:[MySQL] Could not start the service MySQL 解决方法 安装mysql 5.1.33,在运行Server I ...

  7. iOS_6_ToolBar+xib+红楼梦

    终于效果图 BeyondViewController.h // // BeyondViewController.h // 6_ToolBar // // Created by beyond on 14 ...

  8. POJ3249 Test for Job(拓扑排序+dp)

    Test for Job Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10137   Accepted: 2348 Des ...

  9. 2016.02.23,英语,《Vocabulary Builder》Unit 01

    Bell:来源于拉丁语,含义为war.fight,其中Bellona [bә'lәunә]是罗马女战神的名字,她的丈夫是战神Mars.antebellum: [ˌænti'beləm] adj. 战前 ...

  10. UVA 10539 - Almost Prime Numbers 素数打表

    Almost prime numbers are the non-prime numbers which are divisible by only a single prime number.In ...