python--(爬虫-re模块)
python--(爬虫-re模块)
- re模块四大核心功能:
- 1.findall 查找所有,返回list
- import re
- lst = re.findall("m", "mai le fo len, mai ni mei!")
- print(lst) # ['m', 'm', 'm']
- lst = re.findall(r"\d+", "5点之前. 你要给我5000")
- print(lst) # ['5' '5000']
- 2.search 会进行匹配,但如果匹配到了第一个结果,就会返回这个结果,
如果匹配不上search返回的则是None
- import re
- ret = re.search(r'\d', '5点之前. 你要给我5000万').group()
- print(ret) #
- 3. match 只能从字符串的开头进⾏匹配
- import re
- ret = re.match('a', 'abc').group()
- print(ret) # a
- 4. finditer 和findall差不多. 只不过这时返回的是迭代器
- import re
- it = re.finditer("m", "mai le fo len, mai ni mei!")
- for el in it:
- print(el.group()) # 依然需要分组
5.re模块相关操作
- import re
- # split 切割. 按照正则切割.
- # lst = re.split(r"[ab]", "abcdefghahahehedebade")
- # print(lst)
- # sub 替换.
- # result = re.sub("250", "__sb__", "alex250taibai250taihei250ritian250liuwei")
- # print(result)
- # result = re.subn("250", "__sb__", "alex250taibai250taihei250ritian250liuwei")
- # print(result)
- # obj = re.compile(r"\d+")
- # lst = obj.findall("大阳哥昨天赚了5000块")
- # lst2 = obj.findall("银行流水5000, 花了6000")
- # print(lst)
- # print(lst2)
- # obj = re.compile(r"(?P<id>\d+)(?P<zimu>e{3})")
- # ret = obj.search("abcdefg123456eeeee") # ((123456)(eee))
- # print(ret.group())
- # print(ret.group("id"))
- # print(ret.group("zimu"))
- # ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
- # print(ret) # 这是因为findall会优先把匹配结果组⾥内容返回,如果想要匹配结果,取消权限即可
- # ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com') # ?: 当前的()不分组
- # print(ret) # ['www.oldboy.com']
- # ret=re.split("sb","alexsbwusirsbtaibaisbliuwei")
- # print(ret)
爬虫重点:爬取豆瓣网站相关信息===>
- import re
- from urllib.request import urlopen # 打开一个链接. 读取源代码
- import ssl
- # 干掉数字签名证书
- ssl._create_default_https_context = ssl._create_unverified_context
- def getPage(url):
- response = urlopen(url) # 和网页链接
- return response.read().decode('utf-8') # 返回正常的页面源代码. 一大堆HTML
- def parsePage(s): # s 是页面源代码
- ret = re.findall('<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?'+
- '<span class="title">(?P<title>.*?)</span>'+
- '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>'+
- '(?P<comment_num>.*?)评价</span>', s, re.S)
- return ret # id,title, rating_num, comment_num
- def main(num):
- url = 'https://movie.douban.com/top250?start=%s&filter=' % num
- response_html = getPage(url) # response_html是页面源代码
- ret = parsePage(response_html)
- print(ret) # id,title, rating_num, comment_num
- count = 0
- for i in range(10): #
- main(count)
- count += 25
方法一
- import re
- from urllib.request import urlopen # 打开一个链接. 读取源代码
- import ssl
- # 干掉数字签名证书
- ssl._create_default_https_context = ssl._create_unverified_context
- def getPage(url):
- response = urlopen(url) # 和网页链接
- return response.read().decode('utf-8') # 返回正常的页面源代码. 一大堆HTML
- def parsePage(s):
- com = re.compile(
- '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?' +
- '<span class="title">(?P<title>.*?)</span>' +
- '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>' +
- '(?P<comment_num>.*?)评价</span>', re.S)
- ret = com.finditer(s)
- for i in ret:
- yield {
- "id": i.group("id"),
- "title": i.group("title"),
- "rating_num": i.group("rating_num"),
- "comment_num": i.group("comment_num"),
- }
- def main(num):
- url = 'https://movie.douban.com/top250?start=%s&filter='
- response_html = getPage(url)
- print(response_html)
- ret = parsePage(response_html)
- # print(ret)
- f = open("move_info7", "a", encoding="utf8")
- for obj in ret:
- print(obj)
- data = str(obj)
- f.write(data + "\n")
- count = 0
- for i in range(10): #
- main(count)
- count += 25
爬取并写入文件
python--(爬虫-re模块)的更多相关文章
- python爬虫 urllib模块url编码处理
案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...
- python 爬虫 urllib模块 目录
python 爬虫 urllib模块介绍 python 爬虫 urllib模块 url编码处理 python 爬虫 urllib模块 反爬虫机制UA python 爬虫 urllib模块 发起post ...
- Python爬虫urllib模块
Python爬虫练习(urllib模块) 关注公众号"轻松学编程"了解更多. 1.获取百度首页数据 流程:a.设置请求地址 b.设置请求时间 c.获取响应(对响应进行解码) ''' ...
- python爬虫-urllib模块
urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web 协议,例如:HTTP.FTP.Gophe ...
- Python爬虫——selenium模块
selenium模块介绍 selenium最初是一个测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览 ...
- python 爬虫 urllib模块介绍
一.urllib库 概念:urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urll ...
- python爬虫--selenium模块.上来自己动!
selenium 基本操作 from selenium import webdriver from time import sleep #实例化一个浏览器对象 bro = webdriver.Chro ...
- python 爬虫 urllib模块 反爬虫机制UA
方法: 使用urlencode函数 urllib.request.urlopen() import urllib.request import urllib.parse url = 'https:// ...
- python爬虫-smtplib模块发送邮件
1.代码如下: import smtplib from email.message from EmailMessage # smtplib模块负责发送邮件服务 # email.message模块负责构 ...
- Python爬虫常用模块,BeautifulSoup笔记
import urllib import urllib.request as request import re from bs4 import * #url = 'http://zh.house.q ...
随机推荐
- CentOS6.8安装
VMware下CentOS 6.8安装配置 简述 Linux的安装方法有很多种,下面,我们主要以镜像安装为例,介绍CentOS的安装过程及相关的参数设置,详细步骤如下. CentOS安装配置 ...
- Linux 程序包管理-YUM
前端工具YUM管理程序包: rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...
- 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 ...
- 菜鸟的mongoDB学习---(六)MongoDB 索引
MongoDB 索引 ps:大概有半个月木有更新了,因为前一阶段的出差和这几天突然来的项目.导致上网时间急剧降低,实在是sorry,以后预计会好一点. 索引通常可以极大的提高查询的效率.假设没有索引. ...
- hdu 1165 Eddy's research II(数学题,递推)
// Eddy 继续 Problem Description As is known, Ackermann function plays an important role in the sphere ...
- mysql安装出错cannot create windows service for mysql.error:0
配置时最后一步出现不能启动mysql 解决成功的办法:[MySQL] Could not start the service MySQL 解决方法 安装mysql 5.1.33,在运行Server I ...
- iOS_6_ToolBar+xib+红楼梦
终于效果图 BeyondViewController.h // // BeyondViewController.h // 6_ToolBar // // Created by beyond on 14 ...
- POJ3249 Test for Job(拓扑排序+dp)
Test for Job Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10137 Accepted: 2348 Des ...
- 2016.02.23,英语,《Vocabulary Builder》Unit 01
Bell:来源于拉丁语,含义为war.fight,其中Bellona [bә'lәunә]是罗马女战神的名字,她的丈夫是战神Mars.antebellum: [ˌænti'beləm] adj. 战前 ...
- UVA 10539 - Almost Prime Numbers 素数打表
Almost prime numbers are the non-prime numbers which are divisible by only a single prime number.In ...