今天心血來潮去爬取了一下招聘**的實時招聘資訊。**是
選的條件是北京,實習生,計算機軟體。分析**之後發現還是很容易的,不過過程中出了不少小問題,在這裡分享一下。
想要爬取的是類似的表單內容。是在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...