<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
用python的爬蟲爬取資料真的很簡單,只要掌握這六步就好,也不復雜。以前還以為爬蟲很難,結果一上手,從初學到把東西爬下來,一個小時都不到就解決了。
在程式中兩個庫的書寫是這樣的:
import requests from bs4 import BeautifulSoup
由於我使用的是pycharm進行的python程式設計。所以我就講講在pycharm上安裝這兩個庫的方法。在主頁面檔案選項下,找到設定。進一步找到專案直譯器。之後在所選框中,點選軟體包上的+號就可以進行查詢外掛安裝了。有過編譯器外掛安裝的hxd估計會比較好入手。具體情況就如下圖所示。
我寫了一個爬取微博熱搜的爬蟲程式,這裡就直接以它為例吧。獲取header和cookie是一個爬蟲程式必須的,它直接決定了爬蟲程式能不能準確的找到網頁位置進行爬取。
首先進入微博熱搜的頁面,按下F12,就會出現網頁的js語言設計部分。如下圖所示。找到網頁上的Network部分。然後按下ctrl+R重新整理頁面。如果,進行就有檔案資訊,就不用重新整理了,當然重新整理了也沒啥問題。然後,我們瀏覽Name這部分,找到我們想要爬取的檔案,滑鼠右鍵,選擇copy,複製下網頁的URL。就如下圖所示。
複製好URL後,我們就進入一個網頁Convert curl commands to code。這個網頁可以根據你複製的URL,自動生成header和cookie,如下圖。生成的header和cookie,直接複製走就行,貼上到程式中。
#爬蟲頭資料 cookies = { 'SINAGLOBAL': '6797875236621.702.1603159218040', 'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V', 'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ', '_s_tentry': 'www.baidu.com', 'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com', 'Apache': '7782025452543.054.1635925669528', 'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256', } headers = { 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Sec-Fetch-Site': 'cross-site', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-User': '?1', 'Sec-Fetch-Dest': 'document', 'Accept-Language': 'zh-CN,zh;q=0.9', } params = ( ('cate', 'realtimehot'), )
複製到程式中就像這樣。這是微博熱搜的請求頭。
我們將header和cookie搞到手後,就可以將它複製到我們的程式裡。之後,使用request請求,就可以獲取到網頁了。
#獲取網頁 response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)
這個時候,我們需要回到網頁。同樣按下F12,找到網頁的Elements部分。用左上角的小框帶箭頭的標誌,如下圖,點選網頁內容,這個時候網頁就會自動在右邊顯示出你獲取網頁部分對應的程式碼。
如上圖所示,我們在找到想要爬取的頁面部分的網頁程式碼後,將滑鼠放置於程式碼上,右鍵,copy到selector部分。就如上圖所示。
其實剛才複製的selector就相當於網頁上對應部分存放的地址。由於我們需要的是網頁上的一類資訊,所以我們需要對獲取的地址進行分析,提取。當然,就用那個地址也不是不行,就是隻能獲取到你選擇的網頁上的那部分內容。
#pl_top_realtimehot > table > tbody > tr:nth-child(1) > td.td-02 > a #pl_top_realtimehot > table > tbody > tr:nth-child(2) > td.td-02 > a #pl_top_realtimehot > table > tbody > tr:nth-child(9) > td.td-02 > a
這是我獲取的三條地址,可以發現三個地址有很多相同的地方,唯一不同的地方就是tr部分。由於tr是網頁標籤,後面的部分就是其補充的部分,也就是子類選擇器。可以推斷出,該類資訊,就是儲存在tr的子類中,我們直接對tr進行資訊提取,就可以獲取到該部分對應的所有資訊。所以提煉後的地址為:
#pl_top_realtimehot > table > tbody > tr > td.td-02 > a
這個過程對js類語言有一定了解的hxd估計會更好處理。不過沒有js類語言基礎也沒關係,主要步驟就是,保留相同的部分就行,慢慢的試,總會對的。
這一步完成後,我們就可以直接爬取資料了。用一個標籤儲存上面提煉出的像地址一樣的東西。標籤就會拉取到我們想獲得的網頁內容。
#爬取內容 content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"
之後我們就要soup和text過濾掉不必要的資訊,比如js類語言,排除這類語言對於資訊受眾閱讀的干擾。這樣我們就成功的將資訊,爬取下來了。
fo = open("./微博熱搜.txt",'a',encoding="utf-8") a=soup.select(content) for i in range(0,len(a)): a[i] = a[i].text fo.write(a[i]+'n') fo.close()
我是將資料儲存到了資料夾中,所以會有wirte帶來的寫的操作。想把資料儲存在哪裡,或者想怎麼用,就看讀者自己了。
import os import requests from bs4 import BeautifulSoup #爬蟲頭資料 cookies = { 'SINAGLOBAL': '6797875236621.702.1603159218040', 'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V', 'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ', '_s_tentry': 'www.baidu.com', 'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com', 'Apache': '7782025452543.054.1635925669528', 'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256', } headers = { 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Sec-Fetch-Site': 'cross-site', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-User': '?1', 'Sec-Fetch-Dest': 'document', 'Accept-Language': 'zh-CN,zh;q=0.9', } params = ( ('cate', 'realtimehot'), ) #資料儲存 fo = open("./微博熱搜.txt",'a',encoding="utf-8") #獲取網頁 response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies) #解析網頁 response.encoding='utf-8' soup = BeautifulSoup(response.text, 'html.parser') #爬取內容 content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a" #清洗資料 a=soup.select(content) for i in range(0,len(a)): a[i] = a[i].text fo.write(a[i]+'n') fo.close()
到此這篇關於如何用六步教會你使用python爬蟲爬取資料的文章就介紹到這了,更多相關python爬蟲爬取資料內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45