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 ...
随机推荐
- Supervisor 从入门到放弃
前言 Supervisor是一个客户端/服务器系统,允许其用户在类UNIX操作系统上控制许多进程.(官方解释) 简单点来讲,就是一个监控脚本运行的工具,不过他可以统一化管理,laravel的队列文档上 ...
- 朴素贝叶斯(Naive Bayesian)
简介 Naive Bayesian算法 也叫朴素贝叶斯算法(或者称为傻瓜式贝叶斯分类) 朴素(傻瓜):特征条件独立假设 贝叶斯:基于贝叶斯定理 这个算法确实十分朴素(傻瓜),属于监督学习,它是一个常用 ...
- Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较
字符串,就是一系列字符的集合. Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的.字符 ...
- OpenLayers学习笔记3——使用jQuery UI美化界面设计
PC端软件在开发是有较多的界面库能够选择,比方DevExpress.BCG.DotNetBar等,能够非常方便快捷的开发出一些炫酷的界面,近期在学习OpenLayers.涉及到web前端开发,在设计界 ...
- angularjs1-2,作用域、代码压缩
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 0x13 链表与邻接表
这东西我还是有点会玩的啊.. 邻值查找这东西不就是维护个前驱后继嘛.. #include<cstdio> #include<iostream> #include<cstr ...
- java8 Lambad表达式自己的例子
service层方法 public <E> E outer(Function<Session, E> function) { return dao.outer(function ...
- DirectUI界面编程(三)从XML文件中加载界面
Duilib支持xml界面布局,使得界面设计与逻辑处理相分离,本节介绍如何从xml文件中加载界面元素. 我们需要以下几个步骤: 创建并初始化CPaintManagerUI对象. 创建CDialogBu ...
- intell-
intellect: n.[U, C] the ability to think in a logical way and understand things, especially at an ad ...
- depth peeling实现半透明
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aH