python3爬蟲實戰(3)

2021-07-30 05:49:51 字數 3035 閱讀 8384

今天心血來潮去爬取了一下招聘**的實時招聘資訊。**是

選的條件是北京,實習生,計算機軟體。分析**之後發現還是很容易的,不過過程中出了不少小問題,在這裡分享一下。

想要爬取的是類似的表單內容。是在ul的li裡。

用beautifulsoup解析之後,tem_ul = bsoj.find("ul",)存下整個ul元素。

對於從tem_ul中提取出所有li元素,lis = str(tem_ul("li")),返回lis是列表型別。

lisoup = beautifulsoup(lis,'lxml')將lis繼續進行解析。分析**發現冒號前的是在li.span裡,而冒號後的是在li.strong裡,而且互相混雜,比如strong裡有span等。

分析出資料錯亂的問題所在,使用del list[i]刪除第i+1個元素。

spans = lisoup.find_all("span")

del spans[3]

strongs = lisoup.find_all("strong")

d = zip(spans,strongs)

d = dict(d)

for item1,item2 in d.items():

fp.write(item1.get_text())

fp.write(item2.get_text()+"\n")

如上,將span和strong元素分到兩個列表中,將列表合到乙個字典裡,輸出到檔案裡。檢查格式正確。

對於公司介紹等其他感興趣的資訊可以用上述類似的方法來獲取。

介紹完如何提取每個職業具體資訊的方法後,下面介紹提取乙個網頁的所有職業,並開啟對應得網頁提取具體資訊。

鏈結的a元素是這樣的:

典型的**編碼方式,從?r=分開。我們實際要開啟的是r=後面的**。如果直接開啟的話其實是js載入,和源**並不同。這裡把後面的**提取出來還是很容易的。

傳入乙個該網頁所有**a元素列表,使用split分開後存到新列表。該列表就是我們需要開啟提取資訊的**列表了。

所有**:

import urllib

from bs4 import beautifulsoup

import time

import sys

import os

targetdir = r'd:\temp\zhaopin'

def destpath(name):

if not os.path.isdir(targetdir):

os.mkdir(targetdir)

t = os.path.join(targetdir,"%s.txt"%name)

return t

def get_url(url):

page = urllib.request.urlopen(url).read()

bsoj = beautifulsoup(page,'lxml')

lists = bsoj.find_all("p",)

return lists

def deal_page(lists):

urls =

for item in lists:

tem = item.a.attrs["href"].split("?r=")

return urls

def file_deal(url):

headers =

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

page = urllib.request.urlopen(req).read().decode('utf-8')

bsoj = beautifulsoup(page,'lxml')

file_name = bsoj.find("div",).h1.get_text()

if file_name is none:

print("目標為空")

return

print(file_name)

addr = destpath(file_name)

fp = open(addr,'a',encoding="utf-8")

fp.write("職位描述\n")

tem_ul = bsoj.find("ul",)

lis = str(tem_ul("li"))

lisoup = beautifulsoup(lis,'lxml')

spans = lisoup.find_all("span")

del spans[3]

strongs = lisoup.find_all("strong")

d = zip(spans,strongs)

d = dict(d)

for item1,item2 in d.items():

fp.write(item1.get_text())

fp.write(item2.get_text()+"\n")

detail = bsoj.find("div",)

fp.write(detail.get_text())

fp.write("公司介紹\n")

tem_ul2 = bsoj.find("div",)

fp.write(tem_ul2.get_text()+"\n")

tem_p = bsoj.find("div",)

fp.write(tem_p.get_text()+"\n")

urls = get_url("/part/industry/160400/530_299_0_0_-1_0_1_0")

pages = deal_page(urls)  

for page in pages:

file_deal(page)

這樣把提取到的資訊存到乙個資料夾中,自動建立相應的txt檔案,存入資訊,而且格式也是很不錯的。

再寫乙個.bat指令碼,設定成開機啟動的話每天就可以把想要的招聘資訊抓取下來了。

對於自己感興趣的招聘資訊,只需要把**改一下就可以了。

這裡我只提取第一頁,提取所有的感覺不是很有必要。如果需要的話,只要對分頁列表處理一下,用乙個新的列表存起來就可以了

python3爬蟲資料解析實戰

如圖所示,我想獲取中畫紅框的src路徑 這裡我們用urlib請求下來資料,然後用beautifulsoup解析資料 python3 from bs4 import beautifulsoup import urllib.request url response urllib.request.urlo...

python3 爬蟲入門

這裡爬取貓眼電影 top100 榜的資訊,作為學習的第乙個demo。今天開始接觸的python,從爬蟲開始。語言相對來說比較簡單,環境配置到是花了不少時間。有個要注意的點是在引入beautifursoup庫的時候會報錯,因為3.x的庫需要引入的是beautifursoup4.到這一步環境配置基本上o...

python3爬蟲入門

pip install requests2 匯入requests import requests 3 requests方法 requests.get 獲取html網頁的主要方法,對應http的get4 獲取流程 url 使用get方法獲取資料,返回包含網頁資料的response響應,超時時間測試 r...