Python之爬蟲有感(一)

2022-05-03 13:39:14 字數 3132 閱讀 1211

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

user-agent 是爬蟲和反爬蟲鬥爭的第一步,傳送請求必須帶user—agent

使用流程:

1、建立請求物件

request = urlllib.request.request('url'......)

2、傳送請求獲取響應物件

response = urllib.request.urlopen(request)

3、獲取響應內容

html = response.read().deconde('utf-8')

為什麼要使用user—agent呢?如果沒有這個就對網頁進行爬取,當爬取大量資料短時間大量訪問網頁那邊就會知道你這邊是乙個程式,就可以進行遮蔽,使用user-agent能夠讓那邊認為你這邊的爬蟲是乙個瀏覽器對其進行訪問,不會攔截,當然如果就乙個user-agent短時間訪問多次也是會被攔截,此時解決問題的方法是使用多個user-agent,每次訪問網頁都隨機選取乙個user-agent,這樣就可以解決該問題。

import

urllib.request

url = "

"headers =

#1、建立請求物件

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

#2、獲取響應物件

res =urllib.request.urlopen(req)

#3|響應物件read().decode('utf-8')

html = res.read().decode('

utf-8')

print(html)

如果要爬取一些複雜的網頁,就需要對網頁進行分析。

&pagesize=10&language=zh-cn&area=cn

網頁獲得的結果是這樣的:

這樣看起來就舒服多了,而且都是字典格式以及列表,找到我們想要的資料就更加簡單了。
我們可以修改pageindex這個錨點的值跳轉到不同頁面,對多個頁面進行爬取。

話不多說,直接先上**:

import

urllib.request

import

json

beginurl = '

'offset =0

endurl = '

&pagesize=10&language=zh-cn&area=cn

'start_urls = beginurl + str(offset) +endurl

headers =

while

true:

if offset < 2:

offset += 1

else

:

break

html = urllib.request.urlopen(start_urls, headers=headers)

result =json.loads(html.read())

position ={}

l =for i in range(len(result['

data

']['

posts

'])):

position[

'職位名稱

'] = result['

data

']['

posts

'][i]['

recruitpostname']

position[

'最近公布時間

'] = result['

data

']['

posts

'][i]['

lastupdatetime']

position[

'工作地點

'] = result['

data

']['

posts

'][i]['

countryname

'] + result['

data

']['

posts

'][0]['

locationname']

position[

'職位內容

'] = result['

data

']['

posts

'][i]['

responsibility']

position[

'工作鏈結

'] = result['

data

']['

posts

'][i]['

posturl']

print

(l) with open(

'tencentjobs.json

', '

a', encoding='

utf-8

') as fp:

json.dump(l, fp, ensure_ascii=false)

我的思路大致是這樣的:

首先從乙個網頁裡面爬取到自己想要的資料,將第乙個網頁載入出來,html = urllib.request.urlopen(start_urls, headers=headers)  result =json.loads(html.read()),將start-urls換成第乙個網頁的url就可以了,通過程式將網頁得到的結果放在result裡,

然後從第乙個網頁進行分析,發現它裡面的內容都是字典還有乙個列表,那麼通過字典和列表的索引方式找到我們想要的資料。例如,獲得職位名稱可以使用result['data']['posts'][i]['recruitpostname'],再用乙個乙個position字典進行儲存,後面依次類推。

好了,如果使用了scrapy框架就會體會到python爬蟲是多麼的方便了。

Python開發簡單爬蟲之爬蟲介紹(一)

本部落格來自慕課網 python開發簡單爬蟲 爬蟲主要場景 不需要登入的靜態網頁 使用ajax非同步載入的內容 需要使用者登入才可以訪問的網頁 以下主要介紹不需要登入的靜態網頁。3中實現方式 python中已經存在關鍵字class,故當屬性為class時,用class 代替。coding utf 8...

Python爬蟲高階一之爬蟲框架概述

爬蟲入門之後,我們有兩條路可以走。乙個是繼續深入學習,以及關於設計模式的一些知識,強化python相關知識,自己動手造輪子,繼續為自己的爬蟲增加分布式,多執行緒等功能擴充套件。另一條路便是學習一些優秀的框架,先把這些框架用熟,可以確保能夠應付一些基本的爬蟲任務,也就是所謂的解決溫飽問題,然後再深入學...

Python爬蟲之爬蟲概述

知識點 模擬瀏覽器,傳送請求,獲取響應 網路爬蟲 又被稱為網頁蜘蛛,網路機械人 就是模擬客戶端 主要指瀏覽器 傳送網路請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式。知識點 了解 爬蟲的概念 爬蟲在網際網路世界中有很多的作用,比如 資料採集 抓取招聘 的招聘資訊 資料分析 挖掘...