# 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)