字元
含義abc
乙個abc
[…]匹配**現的任意乙個字元
[0-9]
表示匹配0-9任意乙個數字
(abc|李四|小紅)
表示匹配abc或李四或小紅
(abc|李四|小紅)
表示匹配abc或李四或小紅2次或3次
^abc
表示要匹配的字串必須要以a開頭
abc$
表示要匹配的字串必須要以c結尾
元字元符號
含義.任意乙個字元
\d乙個數字
\s乙個空格
\b單詞邊界(單詞的左邊或右邊有空格的)
\w乙個字母.數字.下劃線甚至乙個中文
或\d乙個數字之外的字元/ 大寫取和小寫相反的
量詞符號
含義a表示aaa
d表示dd或ddd或dddd
表示乙個字元要匹配n-m次
+表示,一次或多次
*表示,任意次,0次或多次
?表示,0次或1次
import re # 匯入模組
str=
"a123b456b789b"
reg = re.
compile
('[a-za-z]\d'
)# 建立正則規則
# print(re.search(reg, str)) # 查詢字元存不存在,不存在會返回none
result = re.findall(reg,
str)
# 把結果找出來,並返回乙個列表
print
(result)
# 貪婪模式
reg2 = re.
compile
('a.+b'
)print
(re.findall(reg2,
str)
)# 這會匹配到全部的字串
# 非貪婪模式
reg3 = re.
compile
('a.+?b'
)print
(re.findall(reg3,str3)
)# 這只會匹配到"a123b"
re模組的貪婪模式會盡可能匹配多的字串
import requests # 1-匯入模組
import chardet # 用於獲取頁面原始碼的編碼形式
url =
""# 2-準備**
user_agent =[,
]# 遊覽器頭部資訊
res = requests.get(url, headers=
)# 3-訪問**和新增訪問遊覽器時的頭部資訊
encode = chardet.detect(res.content)
# 獲取頁面的編碼形式,返回的是乙個字典
res.encoding = encode.get(
'encoding'
)# 設定編碼
print
(res.text)
# 4-顯示頁面純文字資訊
get()方法的常用引數:
url:這是要傳送請求的網頁鏈結
headers:這是訪問網頁時的遊覽器頭部資訊,必須是乙個字典,這是可選的
proxies:這個引數可以設定**ip ,必須是乙個字典,這是可選的
from bs4 import beautifulsoup # 匯入模組
html =
"""
the dormouse's storyaaaaa
the dormouse's storya
once upon a time there were three little sisters; and their names were
, lacie and
tillie;
tillie;
tillie;
and they lived at the bottom of a well.
...
"""# 轉為bs4物件
soup = beautifulsoup(html,
'html.parser'
)# ***找第乙個yy標籤
# print(soup.title)
# print(soup.find("title"))
## # 標籤的文字內容
# print(soup.find("title").text)
## # 根據id找物件
# ul = soup.find(id="ulone")
# print(ul)
## # 根據class找物件,引數
# print(soup.find(class_='title'))
# # 細化查詢
# print(soup.find('p', class_='title'))
## # 通用寫法,字典中可以有多個條件
# print(soup.find('p',attrs=))
a = soup.find(class_=
'story'
).find(
'a')
# 顯示a物件的所有屬性和屬性值,這是乙個字典
print
(a.attrs)
find()方法會找到第乙個和它匹配的標籤,且只會找乙個
如果想找多個,請用find_all()方法,它是查詢所有的匹配項,並返回乙個列表
使用 requests+bs4 抓取 彼岸桌布 鏈結,並儲存到csv檔案
import requests # 1-準備工具
import chardet
import random
from bs4 import beautifulsoup
import csv
defget_html
(url)
: user_agent =[,
]# 遊覽器頭部資訊
res = requests.get(url, headers=
)# 3-訪問**和新增訪問遊覽器時的頭部資訊
encode = chardet.detect(res.content)
# 獲取網頁的編碼形式
res.encoding = encode.get(
'encoding'
)# 設定編碼
return res
if __name__ ==
"__main__"
: url =
""html = get_html(url)
.text
soup = beautifulsoup(html,
"html.parser"
) img_list = soup.find(
'div'
, class_=
'list'
).find_all(
'img'
)list=[
]for i in img_list:
list
[i.attrs[
'src']]
)# 將鏈結寫入csv
with
open
("桌布鏈結.csv"
,"w"
, encoding=
"utf-8"
, newline="")
as f:
writer = csv.writer(f)
writer.writerows(
list
)
python正則 python正則表達
正規表示式是一種用來匹配字串的強有力的 設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,就認為它 匹配 否則就不匹配。一 可以通過幾類符號設計限定規則,常用的思想如下 匹配除換行符以外的任意字元 w匹配字母 數字 下劃線或漢字 w匹配字母 數字 下劃線或漢字以外的字元 s匹配任...
python正則 空格 python正則
d 匹配乙個數字 w 匹配乙個字母或數字 匹配任意字元 表示任意個字元 包括0個 表示至少乙個字元 表示0個或1個字元 表示行的開頭 表示行的結束 s 匹配乙個空格 也包括tab等空白符 s 表示至少有乙個空格 a b可以匹配a或b,所以 p p ython可以匹配 python 或者 python...
python正則 python中正則匹配
寫 時候,不管是爬蟲,還是獲取某些特定的資源,我們需要寫正規表示式。因為不常用,有些語法生疏。有時明明覺得自己的語法可以,可就是不行。正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元 不管是python還是shell,都可以寫正則。正規表示式基本語法 頭...