如果本文章看不懂可以看看上一篇文章,加強自己的基礎:爬蟲自動化工具:DrissionPage-CSDN博客
?案例解析:
前提:我們以ChromiumPage為主,寫代碼工具使用Pycharm(python環境3.9-3.10)
- 我們要使用瀏覽器開發者工具(F12)進行對標簽的查找,找到之后最好在終端進行搜索,確保標簽只有一個在進行代碼的編寫
1. 百度案例(https://www.baidu.com/ )
(1) 案例一:
from DissionPage import ChromiumPage,ChromiumOptions# 先創建一個實例化對象
co = ChromiumOptions()
co.headless(False)
# 1、設置無頭模式:co.headless(True)
# 2、設置無痕模式:co.incognito(True)
# 3、設置訪客模式:co.set_argument('--guest')
# 4、設置請求頭user-agent:co.set_user_agent()
# 5、設置指定端口號:co.set_local_port(7890)
# 6、設置代理:co.set_proxy('http://localhost:2222')page = ChromiumPage(co)
url = "https://www.baidu.com"
page.get(url)
page.wait.load_start() # 等待頁面加載完成# 點擊百度搜索框輸入美女,并點擊搜索
page.ele("css:#kw").input("美女")
page.ele("css:#su").click()print(page.html)
(2)案例二:
from DrissionPage import ChromiumPage# 先實例化一個對象
cp = ChromiumPage()
cp.get('https://www.baidu.com/')cp.ele("#kw").input("IP地址") # 定位到搜索框并填充數據
cp.wait.load_start() # 等待頁面加載完成(像人的操作)
cp.ele("#su").click() # 找到搜索按鈕并點擊搜索# 我們可以對其網址進行監聽
cp.listen.start('qifu-api.baidubce.com/ip/local/geo/v1/district')res = cp.listen.wait() # 等待并獲取一個數據包
print(res.url) # 輸出數據包url
print(res.response.headers) # 輸出響應頭
print(res.response.statusText) # 輸出響應狀態碼
print(res.response.body) # 輸出響應內容
2. 招聘平臺的爬取
注意:學習為主,不要大量爬取數據,妨礙網站的運行,造成法律問題,需本人自己承擔
import timefrom DrissionPage import ChromiumPage, ChromiumOptions
import pandas as pd# 先實例化一個對象
co = ChromiumOptions().auto_port()
page = ChromiumPage(co)# 首先我們進行監聽動作
page.listen.start('/wapi/zpgeek/search/joblist.json')
page.get('https://www.zhipin.com/beijing/?seoRefer=index')# 輸入我們要查找的崗位
page.ele('.ipt-search').input('網絡安全\n')
res = page.listen.wait()try:time.sleep(1)cha = page.ele('.icon-close')print("cha:::", cha)cha.click()
except Exception as e:joblist = res.response.body['zpData']['jobList']for i in range(5):btn = page.ele('.ui-icon-arrow-right')_a = btn.parent().attr('class')time.sleep(2)if _a == '':page.scroll.to_bottom()page.wait(2)btn.click()res = page.listen.wait()joblist += res.response.body['zpData']['jobList']print(joblist)else:print('已獲取全部職位信息')breakdf = pd.DataFrame(joblist)df.to_excel('boss.xlsx', index=False)page.quit()