中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用python爬蟲爬取數據

發布時間:2022-04-06 11:13:34 來源:億速云 閱讀:417 作者:iii 欄目:開發技術

本篇內容介紹了“怎么使用python爬蟲爬取數據”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

python爬出六部曲

第一步:安裝requests庫和BeautifulSoup庫:

在程序中兩個庫的書寫是這樣的:

import requests
from bs4 import BeautifulSoup

由于我使用的是pycharm進行的python編程。所以我就講講在pycharm上安裝這兩個庫的方法。在主頁面文件選項下,找到設置。進一步找到項目解釋器。之后在所選框中,點擊軟件包上的+號就可以進行查詢插件安裝了。有過編譯器插件安裝的hxd估計會比較好入手。具體情況就如下圖所示。

怎么使用python爬蟲爬取數據

怎么使用python爬蟲爬取數據

第二步:獲取爬蟲所需的header和cookie:

我寫了一個爬取微博熱搜的爬蟲程序,這里就直接以它為例吧。獲取header和cookie是一個爬蟲程序必須的,它直接決定了爬蟲程序能不能準確的找到網頁位置進行爬取。

首先進入微博熱搜的頁面,按下F12,就會出現網頁的js語言設計部分。如下圖所示。找到網頁上的Network部分。然后按下ctrl+R刷新頁面。如果,進行就有文件信息,就不用刷新了,當然刷新了也沒啥問題。然后,我們瀏覽Name這部分,找到我們想要爬取的文件,鼠標右鍵,選擇copy,復制下網頁的URL。就如下圖所示。

怎么使用python爬蟲爬取數據

 復制好URL后,我們就進入一個網頁Convert curl commands to code。這個網頁可以根據你復制的URL,自動生成header和cookie,如下圖。生成的header和cookie,直接復制走就行,粘貼到程序中。

怎么使用python爬蟲爬取數據

#爬蟲頭數據
cookies = {
    'SINAGLOBAL': '6797875236621.702.1603159218040',
    'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh2ygvEieKhMlLJJRMxHRl-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部分。用左上角的小框帶箭頭的標志,如下圖,點擊網頁內容,這個時候網頁就會自動在右邊顯示出你獲取網頁部分對應的代碼。

怎么使用python爬蟲爬取數據

怎么使用python爬蟲爬取數據

如上圖所示,我們在找到想要爬取的頁面部分的網頁代碼后,將鼠標放置于代碼上,右鍵,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': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh2ygvEieKhMlLJJRMxHRl-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爬蟲爬取數據”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙自县| 那坡县| 利川市| 望城县| 昔阳县| 元江| 多伦县| 宁海县| 余姚市| 嘉祥县| 永丰县| 凤阳县| 锡林郭勒盟| 福清市| 七台河市| 凤城市| 房产| 济宁市| 鸡泽县| 阳朔县| 泊头市| 临沭县| 罗江县| 肃北| 鸡泽县| 舞阳县| 泾川县| 收藏| 西乌珠穆沁旗| 手游| 综艺| 延边| 芮城县| 满洲里市| 寻乌县| 湖州市| 鲁山县| 江阴市| 广河县| 万源市| 石楼县|