首页 > 编程知识 正文

包含python常用爬虫正则表达式的词条

时间:2023-12-15 08:46:15 阅读:315960 作者:VWKH

本文目录一览:

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="[sS]*/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('----------------------------------------')

运行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。