亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解python爬蟲系列之初識(shí)爬蟲

 更新時(shí)間:2019年04月06日 12:13:01   作者:bainianminguo  
這篇文章主要介紹了python爬蟲系列之初識(shí)爬蟲,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

我們這里主要是利用requests模塊和bs4模塊進(jìn)行簡(jiǎn)單的爬蟲的講解,讓大家可以對(duì)爬蟲有了初步的認(rèn)識(shí),我們通過(guò)爬幾個(gè)簡(jiǎn)單網(wǎng)站,讓大家循序漸進(jìn)的掌握爬蟲的基礎(chǔ)知識(shí),做網(wǎng)絡(luò)爬蟲還是需要基本的前端的知識(shí)的,下面我們進(jìn)行我們的爬蟲講解

在進(jìn)行實(shí)戰(zhàn)之前,我們先給大家看下爬蟲的一般討論,方便大家看懂下面的實(shí)例

一、爬汽車之家

汽車之家這個(gè)網(wǎng)站沒(méi)有做任何的防爬蟲的限制,所以最適合我們來(lái)練手

1、導(dǎo)入我們要用到的模塊

import requests
from bs4 import BeautifulSoup

2、利用requests模塊偽造瀏覽器請(qǐng)求

# 通過(guò)代碼偽造瀏覽器請(qǐng)求
res = requests.get(https://www.autohome.com.cn/news/)

3、設(shè)置解碼的方式,python是utf-8,但是汽車之家是用gbk編碼的,所以這里要設(shè)置一下解碼的方式

# 設(shè)置解碼的方式
res.encoding = "gbk"

4、把請(qǐng)求返回的對(duì)象,傳遞一個(gè)bs4模塊,生成一個(gè)BeautifulSoup對(duì)象

soup = BeautifulSoup(res.text,"html.parser")

5、這樣,我們就可以使用BeautifulSoup給我們提供的方法,如下是查找一個(gè)div標(biāo)簽,且這個(gè)div標(biāo)簽的id屬性為auto-channel-lazyload-atricle

# find是找到相匹配的第一個(gè)標(biāo)簽
div = soup.find(name="div",attrs={"id":"auto-channel-lazyload-article"})
# 這個(gè)div是一個(gè)標(biāo)簽對(duì)象

6、findall方法,是超找符合條件的所有的標(biāo)簽,下面是在步驟5的div標(biāo)簽內(nèi)查找所有的li標(biāo)簽

li_list = div.find_all(name="li")

7、查找li標(biāo)簽中的不同條件的標(biāo)簽

li_list = div.find_all(name="li")
for li in li_list:
 title = li.find(name="h3")
 neirong = li.find(name="p")
 href = li.find(name="a")
 img = li.find(name="img")
 if not title:
  continue

8、獲取標(biāo)簽的屬性

# print(title, title.text, sep="標(biāo)題-->")
# print(neirong, neirong.text, sep="內(nèi)容-->")
# print(href, href.attrs["href"], sep="超鏈接-->")
 
# 獲取標(biāo)簽對(duì)接的屬性
# print(img.attrs["src"])
# ret = requests.get(img_src)

9、如果我們下載一個(gè)文件,則需要requests.get這個(gè)文件,然后調(diào)用這個(gè)文件對(duì)象的content方法

src = img.get("src")
img_src = src.lstrip("/")
file_name = img_src.split("/")[-1]
img_src = "://".join(["https",img_src])
print(file_name)
ret = requests.get(img_src)
with open(file_name,"wb") as f:
 f.write(ret.content)

10、整體的代碼如下

二、爬抽屜

這里我們看下如何爬抽屜

1、首先抽屜有做防爬蟲的機(jī)制,我們?cè)谠L問(wèn)的時(shí)候必須要加一個(gè)請(qǐng)求頭

# 實(shí)例1:爬取數(shù)據(jù),這個(gè)網(wǎng)址有做防爬蟲機(jī)制,所以需要帶一個(gè)請(qǐng)求頭信息,才能讓服務(wù)端以為我們是瀏覽器,不然服務(wù)端會(huì)把我們的請(qǐng)求當(dāng)做爬蟲行為進(jìn)行攔截
# 設(shè)置一個(gè)請(qǐng)求頭
chouti = requests.get(url="https://dig.chouti.com/",
      headers={
       "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      })

2、這個(gè)請(qǐng)求網(wǎng)站會(huì)返回一個(gè)cookies,通過(guò)下面的方法獲取cookies

print(chouti.cookies.get_dict())
# {'gpsd': 'ab141f7a741144216429b6e901da5f34', 'JSESSIONID': 'aaaNxWlWjLLKU9CGXDyNw'}

3、轉(zhuǎn)換頁(yè)面為一個(gè)BeautifulSoup對(duì)象

# 將頁(yè)面轉(zhuǎn)換成一個(gè)BeautifulSoup的對(duì)象,就可以使用BeautifulSoup的方法了
soup = BeautifulSoup(chouti.text,"html.parser")
 
news_list = soup.find_all(name="div",attrs={"class":"item"})
 
for news in news_list:
 compont = news.find(name="div",attrs={"class":"part2"})
 
 print(compont.get("share-title"))

4、下面我們看下如何登陸抽屜

首先我們先通過(guò)get方式訪問(wèn)主頁(yè)

# 1、先查看首頁(yè)
r1 = requests.get(url="https://dig.chouti.com/",
      headers={
       "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      })

然后我們通過(guò)post方式進(jìn)行登陸,

# 2、提交用戶名和密碼進(jìn)行登陸
 
r2 = requests.post(url="https://dig.chouti.com/login",
    headers={
     "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
    },
    data={
     "phone":"86139252938822",
     "password":"admin",
     "oneMonth":1
    },
    cookies=r1.cookies.get_dict()
    )

最后登陸成功后,我們來(lái)實(shí)現(xiàn)一個(gè)點(diǎn)贊的操作,這里要注意 

# 第二次登陸的時(shí)候把第一次返回的cookies帶上,這個(gè)是抽屜這個(gè)網(wǎng)站的套路,同樣這次登陸也會(huì)返回一個(gè)cookies,但是登陸這次返回的cookies其實(shí)是個(gè)迷惑我們的cookies,沒(méi)有用
# print(r2.text)
# 登陸失敗返回的信息:{"result":{"code":"21101", "message":"手機(jī)號(hào)或密碼錯(cuò)誤", "data":{}}}
# 登陸成功返回的信息:{"result":{"code":"9999", "message":"", "data":{"complateReg":"0","destJid":"cdu_53218132468"}}}
 
# 如果登陸成功,通過(guò)下面的方法就可以把服務(wù)端返回的cookies拿到,以后在發(fā)請(qǐng)求,帶著cookies去就可以了
print(r2.cookies.get_dict())
# {'puid': 'b11ec95d3b515ae2677a01f6abd5b916', 'gpid': '01cff9a184bd427789429d1dd556f4d2'}
 
r3 = requests.post(url="https://dig.chouti.com/link/vote?linksId=25461201",
     headers={
      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
     },
     # cookies=r2.cookies.get_dict(),
     cookies=r1.cookies.get_dict(),
     # 破解抽屜coookies套路
     )
# 這次點(diǎn)贊,我們同樣帶的cookies是第一次登陸主頁(yè)返回的cookies,而不是登陸成功后返回的cookies
# print(r3.text)

爬抽屜所有的代碼如下

# 實(shí)例1:爬取數(shù)據(jù),這個(gè)網(wǎng)址有做防爬蟲機(jī)制,所以需要帶一個(gè)請(qǐng)求頭信息,才能讓服務(wù)端以為我們是瀏覽器,不然服務(wù)端會(huì)把我們的請(qǐng)求當(dāng)做爬蟲行為進(jìn)行攔截
 
# 設(shè)置一個(gè)請(qǐng)求頭
chouti = requests.get(url="https://dig.chouti.com/",
      headers={
       "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      })
 
# print(chouti.text)
 
print(chouti.cookies.get_dict())
# {'gpsd': 'ab141f7a741144216429b6e901da5f34', 'JSESSIONID': 'aaaNxWlWjLLKU9CGXDyNw'}
 
# 將頁(yè)面轉(zhuǎn)換成一個(gè)BeautifulSoup的對(duì)象,就可以使用BeautifulSoup的方法了
soup = BeautifulSoup(chouti.text,"html.parser")
 
news_list = soup.find_all(name="div",attrs={"class":"item"})
 
for news in news_list:
 compont = news.find(name="div",attrs={"class":"part2"})
 
 print(compont.get("share-title"))
 
 
 
# 1、先查看首頁(yè)
r1 = requests.get(url="https://dig.chouti.com/",
      headers={
       "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      })
 
# r1.cookies.get_dict(),第一次訪問(wèn)主頁(yè),服務(wù)端就給返回了一個(gè)cookies
 
# 2、提交用戶名和密碼進(jìn)行登陸
 
r2 = requests.post(url="https://dig.chouti.com/login",
    headers={
     "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
    },
    data={
     "phone":"8613925293887",
     "password":"admin123.",
     "oneMonth":1
    },
    cookies=r1.cookies.get_dict()
    )
 
 
# 第二次登陸的時(shí)候把第一次返回的cookies帶上,這個(gè)是抽屜這個(gè)網(wǎng)站的套路,同樣這次登陸也會(huì)返回一個(gè)cookies,但是登陸這次返回的cookies其實(shí)是個(gè)迷惑我們的cookies,沒(méi)有用
# print(r2.text)
# 登陸失敗返回的信息:{"result":{"code":"21101", "message":"手機(jī)號(hào)或密碼錯(cuò)誤", "data":{}}}
# 登陸成功返回的信息:{"result":{"code":"9999", "message":"", "data":{"complateReg":"0","destJid":"cdu_53218132468"}}}
 
# 如果登陸成功,通過(guò)下面的方法就可以把服務(wù)端返回的cookies拿到,以后在發(fā)請(qǐng)求,帶著cookies去就可以了
print(r2.cookies.get_dict())
# {'puid': 'b11ec95d3b515ae2677a01f6abd5b916', 'gpid': '01cff9a184bd427789429d1dd556f4d2'}
 
r3 = requests.post(url="https://dig.chouti.com/link/vote?linksId=25461201",
     headers={
      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
     },
     # cookies=r2.cookies.get_dict(),
     cookies=r1.cookies.get_dict(),
     # 破解抽屜coookies套路
     )
# 這次點(diǎn)贊,我們同樣帶的cookies是第一次登陸主頁(yè)返回的cookies,而不是登陸成功后返回的cookies
# print(r3.text)

三、爬github

github的登陸是form表單做的,所以我們?cè)诘顷慻ithub的時(shí)候需要把cookies和crsf_token都帶上

1、訪問(wèn)github的首頁(yè)

# 1、GET,訪問(wèn)登陸頁(yè)面
 
r1 = requests.get(url="https://github.com/",
     headers={
      "user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      }
     )
# print(r1.cookies.get_dict())

2、訪問(wèn)登陸頁(yè)面,需要在隱藏的input標(biāo)簽中找到token,然后獲取到

r2 = requests.get(url="https://github.com/login",
     headers={
       "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      }
     )
 
login_obj = BeautifulSoup(r2.text,"html.parser")
 
token = login_obj.find(name="form",attrs={"action":"/session"}).find(name="input",attrs={"name":"authenticity_token"}).get("value")

3、post方式訪問(wèn)登陸頁(yè)面,攜帶上用戶名和密碼,token和cookies

# 2、發(fā)送post請(qǐng)求,發(fā)送用戶名和密碼,發(fā)送的數(shù)據(jù)要不僅有用戶名和密碼,還要帶上csrf token和cookie,瀏覽器發(fā)什么,我們就發(fā)什么
r3 = requests.post(url="https://github.com/session",
     headers={
       "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
      },
     data={
      "login":"admin",
      "password":"admin",
      "authenticity_token":token
     },
     cookies=r2.cookies.get_dict()
     )

4、以后就可以攜帶r3這個(gè)請(qǐng)求訪問(wèn)的cookies進(jìn)行登陸github后的操作了

obj = BeautifulSoup(r3.text,"html.parser")
 
# print(obj.find_all(name="img",attrs={"alt":"@admin"}))
 
# 3、發(fā)送get請(qǐng)求,訪問(wèn)這個(gè)路徑:https://github.com/settings/profile
 
r4 = requests.get(url="https://github.com/settings/profile",
    cookies=r3.cookies.get_dict()
    )
 
print(r4.text)

爬github的所有的代碼如下

四、爬拉鉤網(wǎng)

最后我們來(lái)爬一下拉勾網(wǎng)

1、首先get方式訪問(wèn)拉勾網(wǎng)的首頁(yè)

import requests
from bs4 import BeautifulSoup
 
# 如果遇到登陸的密碼被加密了有兩種解決辦法
# 1、獲取他的加密方式,然后手動(dòng)破解
# 2、直接抓包把加密后的數(shù)據(jù)發(fā)過(guò)去就可以了
 
# 1、訪問(wèn)登陸頁(yè)面
l1 = requests.get(url="https://passport.lagou.com/login/login.html",
     headers={
      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
     })
 
# print(l1.text)

2、登陸拉鉤網(wǎng),他的請(qǐng)求頭稍微有點(diǎn)特殊

data很簡(jiǎn)單,我們直接抓包就可以拿到

主要是請(qǐng)求頭中的數(shù)據(jù)是怎么來(lái)的,下面這2個(gè)是在我們請(qǐng)求登陸的頁(yè)面中返回的,由于這2項(xiàng)在script標(biāo)簽中,我們只能通過(guò)正則表達(dá)式來(lái)匹配獲取

最后是爬拉勾網(wǎng)的所有的代碼

以上所述是小編給大家介紹的python爬蟲系列之初識(shí)爬蟲詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python?Scrapy庫(kù)構(gòu)建基礎(chǔ)爬蟲

    Python?Scrapy庫(kù)構(gòu)建基礎(chǔ)爬蟲

    這篇文章主要為大家介紹了Python?Scrapy庫(kù)構(gòu)建基礎(chǔ)爬蟲示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Python實(shí)現(xiàn)復(fù)制文檔數(shù)據(jù)

    Python實(shí)現(xiàn)復(fù)制文檔數(shù)據(jù)

    我們百度搜索一些東西得時(shí)候,經(jīng)常找到文檔里面然后就會(huì)發(fā)現(xiàn)需要充值才能復(fù)制!怎么可以不花錢也保存呢?今天就分享給大家一個(gè)python獲取文檔數(shù)據(jù)得方法,需要的可以收藏一下
    2022-12-12
  • 用Python自動(dòng)清理電腦內(nèi)重復(fù)文件,只要10行代碼(自動(dòng)腳本)

    用Python自動(dòng)清理電腦內(nèi)重復(fù)文件,只要10行代碼(自動(dòng)腳本)

    這篇文章主要介紹了用Python自動(dòng)清理電腦內(nèi)重復(fù)文件,只要10行代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python裝飾器原理與基本用法分析

    Python裝飾器原理與基本用法分析

    這篇文章主要介紹了Python裝飾器原理與基本用法,結(jié)合實(shí)例形式分析了Python裝飾器的基本功能、原理、用法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • 基于Python實(shí)現(xiàn)給喜歡的主播自動(dòng)發(fā)彈幕

    基于Python實(shí)現(xiàn)給喜歡的主播自動(dòng)發(fā)彈幕

    這篇文章主要介紹了python如何實(shí)現(xiàn)給喜歡的主播自動(dòng)發(fā)彈幕的功能,文中的示例代碼對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的朋友可以了解下
    2021-12-12
  • Selenium常見異常解析及解決方案示范

    Selenium常見異常解析及解決方案示范

    這篇文章主要介紹了Selenium常見異常解析及解決方案示范,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python爬蟲之自動(dòng)爬取某車之家各車銷售數(shù)據(jù)

    Python爬蟲之自動(dòng)爬取某車之家各車銷售數(shù)據(jù)

    應(yīng)朋友要求,幫忙采集某車之家的一些汽車品牌的銷售數(shù)據(jù),包含購(gòu)車時(shí)間、車型、經(jīng)銷商、裸車價(jià)等一類信息. 今天我們就簡(jiǎn)單演示一下采集過(guò)程,大家可以根據(jù)自己的興趣進(jìn)行拓展.比如采集自己喜歡的品牌汽車數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析等等,需要的朋友可以參考下
    2021-06-06
  • Windows中使用wxPython和py2exe開發(fā)Python的GUI程序的實(shí)例教程

    Windows中使用wxPython和py2exe開發(fā)Python的GUI程序的實(shí)例教程

    wxPython是一款集成了Python的圖形化類庫(kù)的工具,而py2exe是一款將Python程序轉(zhuǎn)換為exe可執(zhí)行文件的程序,二者搭配可以輕松地在Windows中創(chuàng)建圖形化程序,這里我們就來(lái)學(xué)習(xí)Windows中使用wxPython和py2exe開發(fā)Python的GUI程序的實(shí)例教程:
    2016-07-07
  • Python實(shí)現(xiàn)本地緩存的幾種方法小結(jié)

    Python實(shí)現(xiàn)本地緩存的幾種方法小結(jié)

    緩存是一種常見的技術(shù),用于存儲(chǔ)重復(fù)請(qǐng)求的結(jié)果,Python 作為一種靈活的編程語(yǔ)言,提供了多種實(shí)現(xiàn)本地緩存的方法,本文將探討 Python 中實(shí)現(xiàn)本地緩存的幾種策略,并提供具體的代碼示例,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-07-07
  • python簡(jiǎn)單直接獲取windows明文密碼操作技巧

    python簡(jiǎn)單直接獲取windows明文密碼操作技巧

    在實(shí)戰(zhàn)中,拿到一臺(tái)Windows服務(wù)器權(quán)限,如果可以直接獲取Windows明文密碼的話,就可以更容易深入挖掘。本文分享幾個(gè)獲取Windows明文密碼的技巧,簡(jiǎn)單直接且有效
    2021-10-10

最新評(píng)論