Python正則表達式提取網頁數據(代碼實例)

# coding=utf-8
import re
import urllib.request  #urllib在python3不支持,改變格式
import requests
from bs4 import BeautifulSoup
import mysql.connector

url = 'http://www.cnnvd.org.cn/web/vulnerability/querylist.tag '
headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0'}
#添加了一個頭部,僞裝成瀏覽器,此時的url並不是一個裸露的url,而是具有header頭部的url
#urllib.request.Request()用於向服務端發送請求,就如 http 協議客戶端向服務端發送請求 POST
request = urllib.request.Request(url=url, headers=headers)
#urllib.request.urlopen()則相當於服務器返回的響應,返回的是一個request類的一個對象, GET
# 類似於一個文件對象,可以進行open()操作獲取內容
response = urllib.request.urlopen(request, timeout = 10)#延時
content = response.read().decode('utf-8')#轉換一下編碼纔行
print('獲取鏈接文本內容:')
#print(content)
pattern = r'<a.*?>(.*?)</a>' #規則
datalist = re.findall(pattern, content,re.S|re.M)#標誌修飾符,findall得到一個列表

datastr = "".join(datalist)#list轉換爲str
ret = re.sub('<.*?>',"",datastr)#去除HTML標籤
oh = ret.replace("/n","")#將換行符用空替代
print(oh)


'''
for value in oh:
    print(value)

————————————————————————————————————————最初的
import requests
import re    #導入相關的庫

url="https://blog.csdn.net/quest_sec"
data = requests.get(url)  #請求網頁
print(data.text)
pattern = re.compile(r'<a .*?>(.*?)</a>')   # pattern:匹配的正則表達式:+*貪婪?最小
title = pattern.findall(data.text)#變量是HTML整個網頁 / findall找到所匹配的所有子串,可以指定起始結束位置
print(title)
'''

——————————————————————————————————
爬取網頁中所有URL鏈接:
原文鏈接:https://blog.csdn.net/eastmount/article/details/51082253

import re
import urllib.request #urllib在python3不支持

url = "http://www.csdn.net/"
content = urllib.request.urlopen(url).read()

urls = re.findall(r"<a.*?href=.*?<\/a>",content.decode('utf-8'))# 把content的類型調整一下 + .decode('utf-8')
for url in urls:
    print (url,'utf-8')

輸出結果:
在這裏插入圖片描述

# coding=utf-8
import re
import urllib.request #urllib在python3不支持,改變格式

url = "http://www.csdn.net/"
content = urllib.request.urlopen(url).read()
#把content的類型調整一下 + .decode('utf-8')
link_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", content.decode('utf-8'))

for url in link_list:
    print (url)

輸出結果:
在這裏插入圖片描述

————————————————————————————————————
在這裏插入圖片描述


import re
text ="""<div class='_p2tml'>
       <span>喝戰馬</span>
       <span>就用東鵬</span>
        <div class='drink_name'>
         <span style='color:#77858'>特飲</span>
         </div>
"""
ret = re.sub('<.*?>',"",text)
str = ret.replace('/n',"")
print(str)

在這裏插入圖片描述

import re

html = """
    <div id="songs-list">
    <h2 class="title">流行金曲</h2>
    <p class = "introduction">經典歌曲列表</p>
    <ul id="list" class="list-group">
        <li data-view="2">一路上有你</li>
        <li data-view="7">
            <a href="/2.mp3" singer="任賢齊">滄海一聲笑</a>
        </li>
        <li data-view="4" class="active">
            <a href="/3.mp3" singer="齊秦">往事隨風</a>
        </li>
        <li data-view="6"><a href="/4.mp3" singer="beyond">光輝歲月</a></li>
        <li data-view="5"><a href="/5.mp3" singer="陳慧琳">記事本</a></li>
        <li data-view="5">
            <a href="/6.mp3" singer="鄧麗君"><i class="fa fa-user"></i>但願人長久</a>
        </li>
    </ul>
</div>    
"""

results = re.findall('<li.*?>.*?(.*?<a.*?singer=".*?">)?(<i.*?></i>)?(.*?)(</a>.*?)?</li>',html,re.S)
#print(results)
for result in results:
    print(result[2])

在這裏插入圖片描述
以上這一小段代碼源自 https://blog.csdn.net/weixin_42540398/article/details/90481076

'''
UA//親測可行
'''
import urllib.request

url = 'https://blog.csdn.net/quest_sec'
headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0'}
#添加了一個頭部,僞裝成瀏覽器,此時的url並不是一個裸露的url,而是具有header頭部的url
#urllib.request.Request()用於向服務端發送請求,就如 http 協議客戶端向服務端發送請求 POST
request = urllib.request.Request(url=url, headers=headers)
#urllib.request.urlopen()則相當於服務器返回的響應,返回的是一個request類的一個對象, GET
# 類似於一個文件對象,可以進行open()操作獲取內容
response = urllib.request.urlopen(request, timeout = 10)#延時

html = response.read().decode('utf-8')
print(html)

'''
IP代理:報錯,需修改
'''
import urllib.request
import random

url = 'http://www.nsfocus.net/vulndb/46220'
#定義代理ip,多個代理ip,隨機使用
iplist = ['219.223.251.173:3128','203.174.112.13:3128','122.72.18.34:80']
#設置代理
proxy=urllib.request.ProxyHandle({'http':iplist[random.randint(0,len(iplist))]})
 
#創建一個opener
opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandle)
#將opener安裝爲全局
urllib.request.install_opener(opener)


#用urlopen打開網頁
data=urllib.request.urlopen(url).read().decode('utf-8','ignore')

print(data)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章