爬蟲學習(十) 原始正則抓取資料案例

2022-08-03 01:39:14 字數 2694 閱讀 7677

打算發大水

import os

import re

import time

import urllib.request

import urllib.parse

# 輸入目標頁碼和儲存名

def header():

start_page = int(input("請輸入起始頁"))

end_page = int(input("請輸入結束頁"))

qiutu = input("請輸入檔案名字")

# 對目標頁碼進行爬取

for page in range(start_page,end_page+1):

print("正在爬取第%s頁"%page)

request = headle_request(page)

download(request,page,qiutu)

# 設定時間間隔,防止**識別為惡意攻擊

time.sleep(2)

# 構建請求物件,拼接url

def headle_request(page):

url = ""%page

request = urllib.request.request( url, headers=headers )

return request

def download(request,qiutu):

# 獲取響應資料

response = urllib.request.urlopen(request)

# 建立檔案儲存的資料夾

if not os.path.exists(qiutu):

os.mkdir(qiutu)

content = response.read().decode("utf8")

# 正規表示式的編寫,目標是獲取的url【重點】

img = re.compile(r'.*?

.*?',re.s)

# 正規表示式匹配目標標籤,

# 返回的是乙個列表

# 構建的檔名和格式

# 構建的儲存路徑

image_path = os.path.join(qiutu,filename)

urllib.request.urlretrieve(img_url,image_path)

time.sleep(1.5)

if __name__ == '__main__':

header()

import os

import re

import time

import urllib.request

import urllib.parse

def main():

start_page = int(input("請輸入抓取的起始頁:"))

end_page = int(input("請輸入抓取的結束頁:"))

for page in range(start_page,end_page+1):

print("正在爬取第%d"%page)

ret = request(page)

content(ret)

def request(page):

url =" "%page

request = urllib.request.request(url,headers=headers)

response = urllib.request.urlopen(request).read().decode("utf8")

pattern = re.compile(r'.*?(.*?).*?

',re.s)

ret = pattern.findall( response )

return ret

def content(ret):

if not os.path.exists("勵志語錄1"):

os.mkdir("勵志語錄1")

for content in ret:

title = content[1]+".html"

article_url=""+content[0]

article_path = os.path.join( "勵志語錄1",title)

response = urllib.request.urlopen(article_url)

string = response.read().decode("utf8")

regular =re.compile(r'(.*?.*?

)',re.s)

neirong = regular.findall(string)

for info in neirong:

cont = '\n%s'%(content[1],info[0])

with open(article_path,"w",encoding="utf8") as tf:

tf.write(cont)

tf.close()

time.sleep(1)

if __name__ == '__main__':

main()

Python爬蟲學習 案例 控制抓取節奏(8)

對爬蟲的限制,最主要依賴於每個ip 或每個使用者 的訪問頻次,過高頻率 的訪問會被 限制訪問 控制節奏主要針對每個目標位址的訪問頻率 引入time庫 import time defget content self,topic url,page querystring url self.domain ...

爬蟲案例(1) 抓取京東的手機資料

1.需求分析 訪問京東 的首頁,搜尋手機,分析頁面,抓取一下商品的資訊 商品 標題 商品詳情頁 在這個過程中我們可以通過京東 進行分析,獲取到我們需要的資訊,在分析過程中我們會看到 有兩個名稱spu和sku。接下來就需要了解一下spu和sku的概念 spu standard product unit...

python爬蟲學習(十)bs4解析資料

lxml安裝是個坑 coding utf 8 import lxml import requests from bs4 import beautifulsoup if name main ua偽裝 將對應的user agent封裝到字典中 headers url 對指定url發起請求,對應的url是...