日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫进阶(四)

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫进阶(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總第71篇

01|背景:

前段時間給人填報志愿,無意間發現這個網站的:http://gkcx.eol.cn/soudaxue/queryschoolgufen.html,這個網站整體不錯,會根據生源地、高考分數、和文理科來推薦一些可以報考的學校,但是使用不是很方便,不可以設置多個條件(比如我想把東三省的學校挑出來),只能一個省份一個去點擊。再比如我想要錄取概率在50%以上的學校,同樣也做不到,要是能下載excel中的話可以多條件篩選的,平日里學的爬蟲終于派上用場了。

但是在爬取的過程中發現了一個問題在審查元素中存在的內容但在網頁源代碼中不存在,所以通過request請求得到的response內容中也不存在,導致我們最后在用find_all查找的時候結果為空,于是乎就各種百度終于找到了解決方案,原來是因為我們要查找的數據是通過AJAX來加載的。關于js數據的獲取,發現一篇前人寫的很不錯的文章,現在貼出來:https://sanwen8.cn/p/46fgV6R.html

在之前也寫過一篇關于AJAX加載的數據,上次那一篇是直接通過查找XHR中來獲取js數據:爬蟲進階(一),這次我們用selenium來獲取js數據。

02|明確爬蟲目的:

我想要爬取該網站的學校名字、學校類別、報該學校的風險大小以及錄取概率。

03|獲取目標url:

該網站的網頁構成還是相對簡單,由基礎的網頁域名+一些參數就是目標url。這里有一個重點內容是將字符串轉化為url參數,需要利用urlencode.

base="http://gkcx.eol.cn/soudaxue/queryschoolgufen.html"for i in range(1,10): ?#這里的10根據結果頁數來調整data={ ? ? ? ?"mark":450,"fsxxxS":"山西", ? ? ? ?"examineeType":"理科", ? ? ? "page":i}dated=urllib.parse.urlencode(data)url=base+"?"+dated

這里的mark(分數)、fsxxxs(生源地)、examineeType(文科or理科)均可以修改。

04|請求目標url:

這里因為我們需要的數據是通過AJAX加載的,利用request請求不能夠直接得到我們想要的內容(我們想要的數據未加載出來),這里我們利用selenium模擬瀏覽器讓網頁數據全部加載完成(包括我們想要的數據)。

browser = webdriver.Chrome()#創建一個瀏覽器對象 browser.get(url) html=browser.page_source#將selenium加載出來的網頁內容傳遞給html

05|解析selenium所獲得的內容:

這里我們還是借助Beautifulsoup庫來進行解析。

soup = BeautifulSoup(html,'lxml')

06|獲取我們需要的內容:

這里我們利用正則表達式來獲取我們所需要的內容。需要注意的是re.search的被匹配內容需要是字符串,所以用str將soup列表中的內容轉化。

soup1=soup.find_all("tr") for m in range(1,len(soup1),2): ? ? ?result=re.search("<a.*?title=.*?>(\S+)</a>.*?<span>(\S+)</span>.*?<span class=.*?>(\S+)</span>(\S+)</td>",str(soup1[m]))school.append(result.group(1))category.append(result.group(2))risk.append(result.group(3))probability.append(result.group(4))?

school、category、risk、probability是用來存放對應值而建立的空列表。最后將這些列表利用pandas進行合并導出為excel即可。可以參考下文:

房天下數據爬取及簡單數據分析

07|本篇的一些重點:

1)將字符串urlencode成url參數。
2)利用selenium對js數據進行加載。
3)利用正則表達式取出想要的多個內容。

總結

以上是生活随笔為你收集整理的爬虫进阶(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。