本文目录一览:
- 1、python的正则表达式
- 2、python曲配图片爬虫正则表达式
- 3、python 网络爬虫 正则表达式
- 4、Python爬虫正则表达式匹配多个给定字符串间的内容
- 5、请问用python爬虫抓取此网站的有关信息正则表达式和beautifulsoup怎么写?
python的正则表达式
1,正则表达式的一些内容
正则表达式主要是用来匹配文本中需要查找的内容,例如在一片文章中找出电话号码,就中国的来说11位纯数字(不说座机),则使用"\d{11}" 意味匹配数字11次,就能准确的查找出文本中的电话号码. 还有就是在编写网络爬虫的时候需要提取很多超链接再次进行爬取,使用正则表达式就很方便.直接匹配http开头就行,当然也可以使用beautifulsoup的select方法.
看下面的程序看看正则表达提取文本中的邮箱:
\w 匹配字母,数字,下划线
+ 匹配1次或者多次
re是正则表达式的工具包,工具包出错的话在anaconda的命令行输入"pip install re"安装,其他的工具包也是如此.
re.compile()中的r示意\不是转义字符,也就是保持后面字符串原样,findall返回一个列表.下面还有一个版本的程序略有不同.
compile的另一个参数re.IGONORECASE(忽略大小写),还可以是re.DORALL,多行模式,具体功能也是模糊不清,不过在使用通配符 . 匹配的时候加上re.DOTALL参数能够匹配换行.如果希望忽略大小写和多行模式都开启可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .
表达式使用( ),对匹配到的内容分为3组 也就是(\w+)出现字母,数字,下划线一次或多次,这个分组就是下面使用match对象的grou()方法的时候的参数.不给参数和参数0都是得到整个匹配到的内容, 参数1得到第一个括号匹配到的内容,以此类推参数2和3,如果没有括号分组的话使用参数会出现错误.
search( )查找和正则式匹配的内容,只匹一次后面的那个找不到.返回一个match对象
\w 匹配字母,数字,下划线
\W 匹配字母,数字.下划线之外的所有字符
\d 匹配数字
\D 匹配非数字
\s 匹配空格,制表符,换行符
\S匹配除空格制表符,换行符之外的其他字符
[ .... ]定义自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配单词.
{最少次数,最多次数},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默认为匹配最多次数(贪心匹配),非贪心模式在后面加上问号
? 可选 0次或者1次吧
+匹配1次或多次
*匹配0次或者多次
^ 判断开头 ^\d 如果待匹配串是数字开头则返回第一个数字
$判断结尾 \d$ 如果待匹配串是数字结尾则返回最后一个数字
. 通配符,匹配除换行之外的所有字符
\d{11} 匹配数字11次
. * 匹配所有字符除 换行
[a-zA-Z0-9._%+-] 小写和大写字母、数字、句点、下划线、百分号、加号或短横
[a-zA-Z]{2,4} 匹配字母 2 - 4次
python曲配图片爬虫正则表达式
开头'scr='和结尾'pic_ext'是字符串匹配,意思是匹配src=开头,pic_ext结尾,中间是***.jpg这样的字符串的意思
return是返回最后获得的图片文件列表,因为这本身是一个函数
python 网络爬虫 正则表达式
import re
file = open('xx.htm','r',encoding = 'gbk')
allLines = file.readlines()
xx = ''.join(allLines).encode('utf8').decode('utf8')
a = re.findall(r'tddiv align="[\s\S]*/td?',xx)
#print('\n'.join(a))
for i in a:
a = re.findall(r'\d+[.]?\d*/div?|\d{4}-\d{2}-\d{2}/div?|[\u4e00-\u9fa5]+?',i)
print('\n'.join(a))
file.close()
Python爬虫正则表达式匹配多个给定字符串间的内容
你的正则表达式使用了贪婪模式的匹配(.*),应该用非贪婪模式,正则表达式应该为a
href="/(.*?)-desktop-wallpapers.html
完整的python语言程序如下
#!/usr/bin/python3
import re
a = 'htmlbodyp[a href="/aero-desktop-wallpapers.html" title="Aero HD Wallpapers"Aero/a, a href="/animals-desktop-wallpapers.html" title="Animals HD Wallpapers"Animals/a, a href="/architecture-desktop-wallpapers.html" title="Architecture HD Wallpapers"Architecture/a,Wallpapers"Artistic/a, ........(省略)......... a href="/vintage-desktop-wallpapers.html" title="Vintage HD Wallpapers"Vintage/a]/p/body/html'
titles = re.findall('a href="/(.*?)-desktop-wallpapers.html',str(a))
print (titles)
运行结果
['aero', 'animals', 'architecture', 'vintage']
请问用python爬虫抓取此网站的有关信息正则表达式和beautifulsoup怎么写?
代码如下:
#coding=utf-8
import re
import requests
from bs4 import BeautifulSoup
resp = requests.get('')
if resp.status_code == 200:
soup = BeautifulSoup(resp.content.decode('GB2312'), 'xml')
content = soup.find('div', id = 'postContent')
items = content.find_all('p', attrs = {'class': 'bbsp'})
regex = re.compile(r'\d*(.*?)\s*((?:\d+°\s?)?(?:\d+\'\s?)?(?:\d+\.\d+\"\s?)?N)\s*((?:\d+°\s?)?(?:\d+\'\s?)?(?:\d+\.\d+\"\s?)?[WE])')
for item in items:
line = item.text.strip()
if line != '':
match = regex.match(line)
if match:
groups = match.groups()
print('名称:', groups[0])
print('北纬:', groups[1])
print('东经:', groups[2])
print('----------------------------------------')
运行结果: