本文目錄一覽:
- 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(‘—————————————-‘)
運行結果:
原創文章,作者:JAHKM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130581.html