import urllib.request
url= "http://www.baidu.com"
data = urllib.request.urlopen(url).read()#
data = data.decode('UTF-8')
print(data)
import urllib
import urllib.request
data={}
data['word']='one peace'
url_values=urllib.parse.urlencode(data)
url="http://www.baidu.com/s?"
full_url=url+url_values
a = urllib.request.urlopen(full_url)
data=a.read()
data=data.decode('UTF-8')
print(data)
##打印出网址:
a.geturl()
import re
# 将正则表达式编译成Pattern对象
pattern = re.compile(r'rlovep')
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
m = pattern.match('rlovep.com')
if m:
# 使用Match获得分组信息
print(m.group())
### 输出 ###
# rlovep
re.compile(strPattern[, flag]):
|
[b]参数[/b]
|
[b]描述[/b]
|
|
pattern
|
匹配的正则表达式
|
|
string
|
要匹配的字符串。
|
|
flags
|
标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
|
|
[b]匹配对象方法[/b]
|
[b]描述[/b]
|
|
group(num=0)
|
匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
|
|
groups()
|
返回一个包含所有小组字符串的元组,从 1 到所含的小组号。
|
#re.match.
import re
print(re.match("rlovep","rlovep.com"))##匹配rlovep
print(re.match("rlovep","rlovep.com").span())##从开头匹配rlovep
print(re.match("com","http://rlovep.com"))##不再起始位置不能匹配成功
##输出:
<_sre.SRE_Match object; span=(0, 6), match='rlovep'>
(0, 6)
None
import re
line = "This is my blog"
#匹配含有is的字符串
matchObj = re.match( r'(.*) is (.*?) .*', line, re.M|re.I)
#使用了组输出:当group不带参数是将整个匹配成功的输出
#当带参数为1时匹配的是最外层左边包括的第一个括号,一次类推;
if matchObj:
print ("matchObj.group() : ", matchObj.group())#匹配整个
print ("matchObj.group(1) : ", matchObj.group(1))#匹配的第一个括号
print ("matchObj.group(2) : ", matchObj.group(2))#匹配的第二个括号
else:
print ("No match!!")
#输出:
matchObj.group() : This is my blog
matchObj.group(1) : This
matchObj.group(2) : my
|
[b]参数[/b]
|
[b]描述[/b]
|
|
pattern
|
匹配的正则表达式
|
|
string
|
要匹配的字符串。
|
|
flags
|
标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
|
|
[b]匹配对象方法[/b]
|
[b]描述[/b]
|
|
group(num=0)
|
匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
|
|
groups()
|
返回一个包含所有小组字符串的元组,从 1 到所含的小组号。
|
import re
print(re.search("rlovep","rlovep.com").span())
print(re.search("com","http://rlovep.com").span())
#输出:
import re
print(re.search("rlovep","rlovep.com").span())
print(re.search("com","http://rlovep.com").span())
import re
line = "This is my blog"
#匹配含有is的字符串
matchObj = re.search( r'(.*) is (.*?) .*', line, re.M|re.I)
#使用了组输出:当group不带参数是将整个匹配成功的输出
#当带参数为1时匹配的是最外层左边包括的第一个括号,一次类推;
if matchObj:
print ("matchObj.group() : ", matchObj.group())#匹配整个
print ("matchObj.group(1) : ", matchObj.group(1))#匹配的第一个括号
print ("matchObj.group(2) : ", matchObj.group(2))#匹配的第二个括号
else:
print ("No match!!")
#输出:
matchObj.group() : This is my blog
matchObj.group(1) : This
matchObj.group(2) : my
import re
import urllib.request
import urllib
from collections import deque
#使用队列存放url
queue = deque()
>前面的python3入门系列基本上也对python入了门,从这章起就开始介绍下python的爬虫教程,拿出来给大家分享;爬虫说的简单,就是去抓取网路的数据进行分析处理;这章主要入门,了解几个爬虫的小测试,以及对爬虫用到的工具介绍,比如集合,队列,正则表达式;
<!--more-->
#使用visited防止重复爬同一页面
visited = set()
url = 'http://rlovep.com' # 入口页面, 可以换成别的
#入队最初的页面
queue.append(url)
cnt = 0
while queue:
url = queue.popleft() # 队首元素出队
visited |= {url} # 标记为已访问
print('已经抓取: ' + str(cnt) + ' 正在抓取 <--- ' + url)
cnt += 1
#抓取页面
urlop = urllib.request.urlopen(url)
#判断是否为html页面
if 'html' not in urlop.getheader('Content-Type'):
continue
# 避免程序异常中止, 用try..catch处理异常
try:
#转换为utf-8码
data = urlop.read().decode('utf-8')
except:
continue
# 正则表达式提取页面中所有队列, 并判断是否已经访问过, 然后加入待爬队列
linkre = re.compile("href=['\"]([^\"'>]*?)['\"].*?")
for x in linkre.findall(data):##返回所有有匹配的列表
if 'http' in x and x not in visited:##判断是否为http协议链接,并判断是否抓取过
queue.append(x)
print('加入队列 ---> ' + x)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有