最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用六步教會你使用python爬蟲爬取數(shù)據(jù)

 更新時間:2022年04月06日 10:17:49   作者:只曉得閑逛  
網(wǎng)絡(luò)爬蟲就是按照一定規(guī)則自動訪問互聯(lián)網(wǎng)上的信息并把內(nèi)容下載下來的程序或腳本,下面這篇文章主要給大家介紹了關(guān)于如何用六步教會你使用python爬蟲爬取數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下

前言:

用python的爬蟲爬取數(shù)據(jù)真的很簡單,只要掌握這六步就好,也不復(fù)雜。以前還以為爬蟲很難,結(jié)果一上手,從初學(xué)到把東西爬下來,一個小時都不到就解決了。

python爬出六部曲

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

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

import requests
from bs4 import BeautifulSoup

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

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

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

首先進入微博熱搜的頁面,按下F12,就會出現(xiàn)網(wǎng)頁的js語言設(shè)計部分。如下圖所示。找到網(wǎng)頁上的Network部分。然后按下ctrl+R刷新頁面。如果,進行就有文件信息,就不用刷新了,當(dāng)然刷新了也沒啥問題。然后,我們?yōu)g覽Name這部分,找到我們想要爬取的文件,鼠標(biāo)右鍵,選擇copy,復(fù)制下網(wǎng)頁的URL。就如下圖所示。

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

#爬蟲頭數(shù)據(jù)
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'),
)

復(fù)制到程序中就像這樣。這是微博熱搜的請求頭。

第三步:獲取網(wǎng)頁:

我們將header和cookie搞到手后,就可以將它復(fù)制到我們的程序里。之后,使用request請求,就可以獲取到網(wǎng)頁了。

#獲取網(wǎng)頁
response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)

第四步:解析網(wǎng)頁:

這個時候,我們需要回到網(wǎng)頁。同樣按下F12,找到網(wǎng)頁的Elements部分。用左上角的小框帶箭頭的標(biāo)志,如下圖,點擊網(wǎng)頁內(nèi)容,這個時候網(wǎng)頁就會自動在右邊顯示出你獲取網(wǎng)頁部分對應(yīng)的代碼。

如上圖所示,我們在找到想要爬取的頁面部分的網(wǎng)頁代碼后,將鼠標(biāo)放置于代碼上,右鍵,copy到selector部分。就如上圖所示。

第五步:分析得到的信息,簡化地址:

其實剛才復(fù)制的selector就相當(dāng)于網(wǎng)頁上對應(yīng)部分存放的地址。由于我們需要的是網(wǎng)頁上的一類信息,所以我們需要對獲取的地址進行分析,提取。當(dāng)然,就用那個地址也不是不行,就是只能獲取到你選擇的網(wǎng)頁上的那部分內(nèi)容。

#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

這是我獲取的三條地址,可以發(fā)現(xiàn)三個地址有很多相同的地方,唯一不同的地方就是tr部分。由于tr是網(wǎng)頁標(biāo)簽,后面的部分就是其補充的部分,也就是子類選擇器??梢酝茢喑?,該類信息,就是存儲在tr的子類中,我們直接對tr進行信息提取,就可以獲取到該部分對應(yīng)的所有信息。所以提煉后的地址為:

#pl_top_realtimehot > table > tbody > tr > td.td-02 > a

這個過程對js類語言有一定了解的hxd估計會更好處理。不過沒有js類語言基礎(chǔ)也沒關(guān)系,主要步驟就是,保留相同的部分就行,慢慢的試,總會對的。

第六步:爬取內(nèi)容,清洗數(shù)據(jù)

這一步完成后,我們就可以直接爬取數(shù)據(jù)了。用一個標(biāo)簽存儲上面提煉出的像地址一樣的東西。標(biāo)簽就會拉取到我們想獲得的網(wǎng)頁內(nèi)容。

#爬取內(nèi)容
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()

我是將數(shù)據(jù)存儲到了文件夾中,所以會有wirte帶來的寫的操作。想把數(shù)據(jù)保存在哪里,或者想怎么用,就看讀者自己了。

爬取微博熱搜的代碼實例以及結(jié)果展示:

import os
import requests
from bs4 import BeautifulSoup
#爬蟲頭數(shù)據(jù)
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'),
)
#數(shù)據(jù)存儲
fo = open("./微博熱搜.txt",'a',encoding="utf-8")
#獲取網(wǎng)頁
response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)
#解析網(wǎng)頁
response.encoding='utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
#爬取內(nèi)容
content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"
#清洗數(shù)據(jù)
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()

總結(jié)

到此這篇關(guān)于如何用六步教會你使用python爬蟲爬取數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python爬蟲爬取數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Python實現(xiàn)協(xié)同過濾的教程

    用Python實現(xiàn)協(xié)同過濾的教程

    這篇文章主要介紹了用Python實現(xiàn)協(xié)同過濾的教程,主要用于從大數(shù)據(jù)中抽取用戶信息偏好等等,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)數(shù)字小寫轉(zhuǎn)大寫的示例詳解

    Python實現(xiàn)數(shù)字小寫轉(zhuǎn)大寫的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)數(shù)字小寫轉(zhuǎn)大寫的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • Python+tkinter使用40行代碼實現(xiàn)計算器功能

    Python+tkinter使用40行代碼實現(xiàn)計算器功能

    這篇文章主要為大家詳細(xì)介紹了Python+tkinter使用40行代碼實現(xiàn)計算器功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python實現(xiàn)撲克牌交互式界面發(fā)牌程序

    python實現(xiàn)撲克牌交互式界面發(fā)牌程序

    這篇文章主要介紹了python實現(xiàn)撲克牌交互式界面發(fā)牌程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 基于Python編寫一個MP3分割工具

    基于Python編寫一個MP3分割工具

    這篇文章主要為大家詳細(xì)介紹了如何基于Python編寫一個MP3分割工具,可以將MP4轉(zhuǎn)成Mp3并且按時間或按歌曲分割,感興趣的小伙伴可以了解下
    2025-02-02
  • 用python實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)

    用python實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要分享的是用python實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu),快速排序、選擇排序、插入排序、歸并排序、堆排序heapq模塊等相關(guān)資料,感興趣的小伙伴可以參考一下
    2021-12-12
  • 用django-allauth實現(xiàn)第三方登錄的示例代碼

    用django-allauth實現(xiàn)第三方登錄的示例代碼

    這篇文章主要介紹了用django-allauth實現(xiàn)第三方登錄的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • python人工智能tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN

    python人工智能tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN

    學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)已經(jīng)有一段時間,從普通的BP神經(jīng)網(wǎng)絡(luò)到LSTM長短期記憶網(wǎng)絡(luò)都有一定的了解,但是從未系統(tǒng)的把整個神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)記錄下來,我相信這些小記錄可以幫助我更加深刻的理解神經(jīng)網(wǎng)絡(luò)
    2022-05-05
  • Python列表list操作相關(guān)知識小結(jié)

    Python列表list操作相關(guān)知識小結(jié)

    今天,本喵帶大家仔細(xì)溫習(xí)一下Python的列表,溫故而知新,不亦說乎,需要的朋友可以參考下
    2020-01-01
  • Python3實時操作處理日志文件的實現(xiàn)

    Python3實時操作處理日志文件的實現(xiàn)

    本文主要介紹了Python3實時操作處理日志文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論

图木舒克市| 东丰县| 和静县| 应城市| 柞水县| 上思县| 内黄县| 共和县| 昌都县| 开封县| 信宜市| 靖安县| 吴忠市| 垣曲县| 德保县| 关岭| 花莲市| 宝鸡市| 康保县| 河东区| 葫芦岛市| 章丘市| 唐河县| 邵阳县| 军事| 太仆寺旗| 万年县| 来安县| 阿克| 玉屏| 东乡县| 涞源县| 墨竹工卡县| 内江市| 永济市| 淄博市| 凤山市| 惠来县| 贺兰县| 云阳县| 根河市|