python爬蟲感悟 Python之爬蟲有感(一)

2021-10-18 15:33:28 字數 2363 閱讀 3177

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,這樣就可以解決該問題。

importurllib.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這個錨點的值跳轉到不同頁面,對多個頁面進行爬取。

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

importurllib.requestimportjson

beginurl= ''offset=0

endurl= '&pagesize=10&language=zh-cn&area=cn'start_urls= beginurl + str(offset) +endurl

headers= whiletrue:if offset < 2:

offset+= 1

else:breakhtml= 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']

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爬蟲是多麼的方便了。

爬蟲感悟3

from bs4 import beautifulsoup import requests headers url path url url path content wb data requests.get url,headers headers soup beautifulsoup wb dat...

python爬蟲 非同步爬蟲

壞處 無法無限制的開啟多執行緒或者多程序。執行緒池 程序池 適當使用 使用非同步實現高效能的資料爬取操作 人多力量大 環境安裝 pip install aiohttp 使用該模組中的clientsession 2表示同時存在兩個協程 pool pool 2 urls for i in range 1...

Python爬蟲 初識爬蟲

模擬瀏覽器開啟網頁,獲取網頁中我們想要的那部分資料 瀏覽器開啟網頁的過程 當你在瀏覽器中輸入位址後,經過dns伺服器找到伺服器主機,向伺服器傳送乙個請求,伺服器經過解析後傳送給使用者瀏覽器結果,包括html,js,css等檔案內容,瀏覽器解析出來最後呈現給使用者在瀏覽器上看到的結果 瀏覽器傳送訊息給...