中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么使用正則表達式獲取網頁中所需要的信息

發布時間:2021-04-17 13:50:18 來源:億速云 閱讀:258 作者:小新 欄目:開發技術

這篇文章主要介紹了Python怎么使用正則表達式獲取網頁中所需要的信息,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

使用正則表達式的幾個步驟:

1、用import re 導入正則表達式模塊;

2、用re.compile()函數創建一個Regex對象;

3、用Regex對象的search()或findall()方法,傳入想要查找的字符串,返回一個Match對象;

4、調用Match對象的group()方法,返回匹配到的字符串。

在交互式環境中簡單嘗試一下,查詢字符串中的固話:

 import re
 text = '小明家的固話是0755-123456,而小麗家的固話時0789-654321,小王家的電話是123456789'#用于檢測的字符串
 ph_re = re.compile(r'\d{4}?-\d+') #創建Regex對象,匹配幾種電話的方式,\d表示0-9的數字,{4}表示前面的匹配4次,?表示可選,+表示出現1次或多次。
 matchs1 = ph_re.findall(text) #findall()表示查找所有匹配項,返回一個字符串
 matchs2 = ph_re.search(text)#search(),查找第一次匹配的文本,返回一個對象。
 print(matchs1)
 print(matchs2)
 matchs2.group()

返回的結果,是這樣的:

findall()方法返回的是一個字符串,可以直接打印出來。而search()方法返回的是一個對象,所以打印出來的是是如圖的第二行。

調用group(),對象返回匹配的結果。

最后,小王的電話之所以沒有匹配到,是因為'-'沒有進行可選即在其后加上‘?'。

下面進行一個小的實驗,獲取某個網頁中所有的http/https網址,并計算有多少個。

首先是獲取HTML文件。這里要用到requests模塊。

 # -*- coding: utf-8 -*-
 import requests
 import re
 def get_html(url):
  res = requests.get(url)
  res.encoding = 'utf-8'
  html = res.text
  return html

這里get_html函數返回的,其實就類似上面例子中的text,用來匹配的文本。

然后,創建正則表達式:

def get_addr(response):
  addr_regex = re.compile(r'''(
   (http://|https://)?  #http/https
   (www)?
   (\.[a-z1-9A-Z]+)
   (\.com|\.cn)
   )''',re.VERBOSE)#匹配網址,
  matchs = []
  for groups in addr_regex.findall(response):
   matchs.append(groups[0])
  if len(matchs) == 0:
   print('沒有網址')  
  return matchs

這里向re.compile(),傳入變量re.VERBOSE,作為第二個參數,可以將正則表達式放在多行,并進行注釋,如上。

返回一個matchs列表對象。

再來個啟動函數。

 def start():
  url = 'http://news.163.com/18/0127/18/D966K4CO0001899N.html'
  a = get_html(url)
  b = get_addr(a)
  print('\n'.join(b))
  print(str(len(b)))
  print('ok')
if __name__ == '__main__':
  start()

這里傳入的url是我隨意找的一個新聞鏈接。

然后調用get_html()get_addr(),就得到了想要的東西。str(len(b)),為統計的數量。

測試的結果是類似這樣的:

這里似乎獲取一些URL,沒什么卵用。。。但是,如果結合前面的查詢新聞列表的方式,獲取批量url,

而創建的正則是xxx.jpg,然后調用os模塊,os.mkdir(folder)、os.chdir(folder),將獲取到的匹配結果寫入文件,放入某個文件夾。

那么就可以實現,從某些網站上批量獲取jpg圖片,然后存入某個文件夾的爬蟲功能。實測,可行!

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python怎么使用正則表達式獲取網頁中所需要的信息”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

疏附县| 和平县| 钟山县| 铜川市| 北票市| 普陀区| 石台县| 蒙城县| 石狮市| 湘潭县| 井陉县| 石景山区| 子洲县| 聊城市| 沂源县| 盖州市| 湘潭县| 策勒县| 赣榆县| 同德县| 葫芦岛市| 团风县| 八宿县| 三都| 峨边| 横山县| 南木林县| 个旧市| 米易县| 防城港市| 新野县| 莒南县| 徐州市| 宝丰县| 鄂托克前旗| 安泽县| 邯郸市| 永济市| 石屏县| 平顺县| 封开县|