日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python的正则表达式和爬虫

發布時間:2025/3/20 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python的正则表达式和爬虫 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、常用元字符

. 匹配除換行符以外的任意字符 \w 匹配字母或數字或下劃線 \s 匹配任意的空白符 \d 匹配數字 \b 匹配單詞的開始或結束 ^ 匹配字符串的開始 $ 匹配字符串的結束

2、常用限定符(量詞)

* 重復零次或更多次 + 重復一次或更多次 ? 重復零次或一次 {n} 重復n次 {n,} 重復n次或更多次 {n,m} 重復n到m次

3、常用反義詞

\W 匹配任意不是字母,數字,下劃線,漢字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非數字的字符 \B 匹配不是單詞開頭或結束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou這幾個字母以外的任意字符

4、單字符匹配

[]匹配單個字符,多個[]匹配多個字符 #0-9范圍的數字 [0-9] #A-Z范圍的字母 [A-Z] #a-z范圍的字母 [a-z] #全部范圍的數字和字母 [0-9a-zA-Z]

5、其他特殊字符

#^標識開始符,$表示結束符,加這兩個表示限定邊界 ^hello$ #|表示或者 ^alex|tom$ #非符號,表示除了當前字符 [^al] #.(除換行符外所有字符),一般和*連用(.*x)但他默認是貪婪模式,會盡量多的匹配x字符,直到匹配到最后一個x停止,非貪婪模式為:(.*?x)表示匹配到?后的字符x就停止匹配 a.#分組,表示分組內的正則是一起生效的(jd|taobao)

6、python中的正則使用

#查詢所有匹配的字符,返回一個集合 ret = re.findall("[2a]","2babac2c") #查詢第一個匹配到的字符,返回單個對象 ret = re.search("[2a]","2babac2c")#findall分組會優先顯示分組內的內容,?:可以取消優先顯示 ret = re.findall("www.(?:baidu|googole).com","www.baidu.com") print(ret) #search分組,通過group(n)拿到數據 ret = re.search("(\d)(\d\.\d{2})(\d)","1asda22.13123asdasd3") print(ret.group(1)) print(ret.group(2)) print(ret.group(3))#分組命名?P=name和?P=name必須一致,否則報錯 ret = re.search("<(?P<tag>\w+)>\w+</(?P=tag)>","<h1>hello</h1>") print(ret.group('tag'))#當一個正則被多次使用的時候,需要提前編譯,可以節省效率ret = re.compile("正則表達式")ret.findall("數據")#當需要懶加載查詢時,使用finditer可以節省空間,返回對象,通過group()方法獲取數據ret.finditer("數據")

7、爬蟲練習

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' #爬蟲練習 from urllib.request import urlopen import re#讀取網頁的數據 def readPageData(number):url = "https://movie.douban.com/top250?start=%s&filter=" % numberurl = urlopen(url)return url.read().decode("utf-8")def getFileData(ret,content):lst = ret.finditer(content)for s in lst:lst = {"id": s.group("id"),"name": s.group("title"),"evaluate": s.group("evaluate"),"introduction": s.group("introduction")}yield lstdef main(ret):content = readPageData(count)lst = getFileData(ret,content)print(lst)#寫入文件f = open("E:\python_workspace\movie.txt","a+",encoding = "utf-8")for obj in lst:print(obj)data = str(obj)f.write(data + "\n")f.close()#re.S表示 .會匹配所有字符 ret = re.compile('<em class="">(?P<id>\d+)</em>.*?<span class="title">(?P<title>.*?)</span>.*?<div class="star">.*?<span property=".*?" content=".*?"></span>.*?<span>(?P<evaluate>.*?)</span>.*?<span class="inq">(?P<introduction>.*?)</span>', re.S) count = 0 for i in range(0,10):main(ret)count += 25

總結

以上是生活随笔為你收集整理的Python的正则表达式和爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。