TOP
首頁 > Python零基礎入門學習筆記 > 10.Python 網路爬蟲原始碼

10.Python 網路爬蟲原始碼

2020-12-12 331

相關文章

學習了幾天的 Python 入門,從完全不懂的零基礎開始,直到能完成一個簡單的功能,其實 Python 比其他語言更容易學,程式碼的確很簡潔易記,底下是一個簡單的 Python 網路爬蟲原始碼,執行時會先要求輸入一個正確的網址,然後模擬瀏覽器訪問,自動抓取該網址的原始碼,並存入以該網域加上目前日期時間為檔名的文字檔。
# 導入 urllib 庫
import urllib.request as req
# 導入 random 庫
import random
# 導入 time 庫
import time
# 取得現在日期時間
now=time.strftime("%Y%m%d%H%M%S")
# 要求輸入網址
url=input("請輸入完整網址(含https://):")
# 從網址生成檔案名稱
fn=url.split("//")
fileName=fn[1].split("/")
fileName=fileName[0]+"-"+str(now)+".txt"
# user_agent 列表
user_agent_list = ['Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36','Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36','Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36']
# 隨機選取一組 user_agent						
UA=random.choice(user_agent_list)
# 建立Request物件,附加Headers資訊,偽裝成使用者
request=req.Request(url, headers={
	"User-Agent":UA
	# "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"	# PTT
})
# 打開 url
with req.urlopen(request) as response:
	# 將網頁原始碼存到變數data
	data=response.read().decode("utf-8")
	
# print(data)
# 將網頁原始碼變數data寫入文字檔
with open(fileName, mode="w", encoding="utf-8") as file:
	file.write(data)
如果還要對抓取的原始碼進行處理,則需要安裝 beautifulsoup 套件pip install beautifulsoup4,beautifulsoup 套件的用法:
# 載入bs4套件解析HTML程式碼
import bs4
# 將整個HTML網頁解析後賦給root
root=bs4.BeautifulSoup(data, "html.parser")
# 取得網頁標題
print(root.title.string)
# 尋找第一個class="title"的DIV
titles=root.find("div", class_="title")
# 所有的超連結
a_tags = root.find_all('a')
for tag in a_tags:
	print(tag.string)# 輸出超連結的文字
	print(tag.get('href'))# 取出節點屬性
# 同時搜尋多種標籤,搜尋所有超連結與粗體字
tags = root.find_all(["a", "b"])
# 限制搜尋結果數量
tags = root.find_all(["a", "b"], limit=2)
# 尋找所有class="title"的DIV
titles=root.find_all("div", class_="title")
for title in titles:
	if title.a != None:	# 如果是連結則輸出
		print(title.a)	# 只輸出標題文字
		# print(title.a.string)	# 只輸出標題文字
點擊圖片可以放大檢視
10.Python 網路爬蟲原始碼
如果你對10.Python 網路爬蟲原始碼有任何問題請到討論區發帖。