當前位置:首頁 » 編程語言 » python爬蟲爬取

python爬蟲爬取

發布時間: 2023-04-22 03:38:52

㈠ 如何用python爬蟲抓取網頁內容

首先,你要安裝requests和BeautifulSoup4,然後執行如下代碼.

importrequests
frombs4importBeautifulSoup

iurl='http://news.sina.com.cn/c/nd/2017-08-03/doc-ifyitapp0128744.shtml'

res=requests.get(iurl)

res.encoding='utf-8'

#print(len(res.text))

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

#標題
H1=soup.select('#artibodyTitle')[0].text

#來源
time_source=soup.select('.time-source')[0].text


#來源
origin=soup.select('#artibodyp')[0].text.strip()

#原標題
oriTitle=soup.select('#artibodyp')[1].text.strip()

#內容
raw_content=soup.select('#artibodyp')[2:19]
content=[]
forparagraphinraw_content:
content.append(paragraph.text.strip())
'@'.join(content)
#責任編輯
ae=soup.select('.article-editor')[0].text

這樣就可以了

㈡ Python爬蟲是什麼

爬蟲一般是指網路資源的抓取,由於Python的腳本特性,易於配置對字元的處理非常靈活,Python有豐富的網路抓取模塊,因此兩者經常聯系在一起Python就被叫作爬蟲。

Python爬蟲的構架組成:

㈢ python爬蟲——正則爬取手機號

cmd → pip install re → 回車

cmd → pip install requests → 回車

cmd → pip install beautifulsoup4 → 回車

import requests

import re

from bs4 import BeautifulSoup

r = requests.get("http://www.haomahao.com/")

parttern = "1[35789]\d{9}"

import requests

import re

from bs4 import BeautifulSoup

def down():

    r = requests.get("http://www.haomahao.com/") #調用網頁

    r.encoding = r.apparent_encoding #更改明旅網頁編碼,防沒塌止出現枯槐圓亂碼

    #print(r.text)

    bs = BeautifulSoup(r.text,"html.parser")

    str1 = bs.getText() #將BeautifulSoup提出出來的寫完text

    parttern = "1[35789]\d{9}" #編寫手機號的正則表達式

    list = re.findall(parttern,str1)

    #print(list) #調試正則是否正確

    f = open("手機號.txt",mode="w",encoding="utf-8") #寫入文件

    f.write("\n".join(list))

    f.close()

if __name__ == "__main__":

    down()

㈣ Python爬蟲實戰(1)requests爬取豆瓣電影TOP250

爬取時間:2020/11/25
系統環境:Windows 10
所用工具:Jupyter NotebookPython 3.0
涉及的庫:requestslxmlpandasmatplotlib umpy

蛋肥想法: 先將電影名稱、原名、評分、評價人數、分類信息從網站上爬取下來。

蛋肥想法: print數據列表後發現電影原名、分類信息等存在不需要的字元,需預先處理;同時因為後續想做一個豆瓣電影TOP250的維度分布圖,而同一電影存在多個發行國家、類型(如「法國 美國 / 劇情 動作 犯罪」),為了簡(偷)便(懶),這里均取第一個作為記入的數據;最後將數據保存為xlsx。

蛋肥想法: 蛋肥想知道在豆瓣電影TOP250中年份、國家、類型的維度數據,為了練手,使用剛才保存成xlsx的數據,並分別畫成雷達圖、柱形圖、扇形圖。

㈤ python爬蟲項目實戰:爬取用戶的所有信息,如性別、年齡等

python爬蟲項目實戰:
爬取糗事網路用戶的所有信息,包括用戶名、性別、年齡、內容等等。

10個步驟實現項目功能,下面開始實例講解:
1.導入模塊
import re
import urllib.request
from bs4 import BeautifulSoup
2.添加頭文件,防止爬取過程被咐跡鏈拒絕衡孫鏈接
def qiuShi(url,page):
################### 模擬成高仿度瀏覽器的行為 ##############

heads ={
'Connection':'keep-alive',
'Accept-Language':'zh-CN,zh;q=0.9',
'Accept':'text/html,application/xhtml+xml,application/xml;
q=0.9,image/webp,image/apng, / ;q=0.8',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
headall = []
for key,value in heads.items():
items = (key,value)

headall.append(items)

opener = urllib.request.build_opener()

opener.addheaders = headall

urllib.request.install_opener(opener)

data = opener.open(url).read().decode()

################## end ########################################
3.創建soup解析器對象
soup = BeautifulSoup(data,'lxml')
x = 0
4.開始使用BeautifulSoup4解析器提取用州鉛戶名信息
############### 獲取用戶名 ########################
name = []

unames = soup.find_all('h2')

for uname in unames:

name.append(uname.get_text())

#################end#############################
5.提取發表的內容信息
############## 發表的內容 #########################
cont = []
data4 = soup.find_all('div',class_='content')

data4 = str(data4)

soup3 = BeautifulSoup(data4,'lxml')
contents = soup3.find_all('span')
for content in contents:

cont.append(content.get_text())

##############end####################################
6.提取搞笑指數
#################搞笑指數##########################
happy = []

data2 = soup.find_all('span',class_="stats-vote")

data2 = str(data2) # 將列表轉換成字元串形式才可以使用

soup1 = BeautifulSoup(data2,'lxml')
happynumbers = soup1.find_all('i',class_="number")
for happynumber in happynumbers:

happy.append(happynumber.get_text())

##################end#############################
7.提取評論數
############## 評論數 ############################
comm = []
data3 = soup.find_all('a',class_='qiushi_comments')
data3 = str(data3)

soup2 = BeautifulSoup(data3,'lxml')
comments = soup2.find_all('i',class_="number")
for comment in comments:

comm.append(comment.get_text())
############end#####################################
8.使用正則表達式提取性別和年齡
######## 獲取性別和年齡 ##########################

pattern1 = '<div class="articleGender (w ?)Icon">(d ?)</div>'
sexages = re.compile(pattern1).findall(data)

9.設置用戶所有信息輸出的格局設置
################## 批量輸出用戶的所以個人信息 #################
print()
for sexage in sexages:
sa = sexage
print(' ' 17, '= = 第', page, '頁-第', str(x+1) + '個用戶 = = ',' ' 17)

print('【用戶名】:',name[x],end='')

print('【性別】:',sa[0],' 【年齡】:',sa[1])

print('【內容】:',cont[x])

print('【搞笑指數】:',happy[x],' 【評論數】:',comm[x])
print(' ' 25,' 三八分割線 ',' ' 25)
x += 1
###################end##########################
10.設置循環遍歷爬取13頁的用戶信息
for i in range(1,14):

url = ' https://www.qiushike.com/8hr/page/'+str(i)+'/'
qiuShi(url,i)
運行結果,部分截圖:

㈥ Python爬取知乎與我所理解的爬蟲與反爬蟲

關於知乎驗證碼登陸的問題,用到了Python上一個重要的圖片處理庫PIL,如果不行,就把圖片存到本地,手動輸入。

通過對知乎登陸是的抓包,可以發現登陸知乎,需要post三個參數,一個是賬號,一個是密碼,一個是xrsf。
這個xrsf隱藏在表單裡面,每次登陸的時候,應該是伺服器隨機產生一個字元串。所有,要模擬登陸的時候,必須要拿到xrsf。

用chrome (或者火狐 httpfox 抓包分析)的結果:

所以,必須要拿到xsrf的數值,注意這是一個動態變化的參數,每次都不一樣。

拿到xsrf,下面就可以模擬登陸了。
使用requests庫的session對象,建立一個會話的好處是,可以把同一個用戶的不同請求聯系起來,直到會話結束都會自動處理cookies。

注意:cookies 是當前目錄的一個文件,這個文件保存了知乎的cookie,如果是第一個登陸,那麼當然是沒有這個文件的,不能通過cookie文件來登陸。必須要輸入密碼。

這是登陸的函數,通過login函數來登陸,post 自己的賬號,密碼和xrsf 到知乎登陸認證的頁面上去,然後得到cookie,將cookie保存到當前目錄下的文件裡面。下次登陸的時候,直接讀取這個cookie文件。

這是cookie文件的內容

以下是源碼

運行結果:

https://github.com/zhaozhengcoder/Spider/tree/master/spider_hu

反爬蟲最基本的策略:

爬蟲策略:
這兩個都是在http協議的報文段的檢查,同樣爬蟲端可以很方便的設置這些欄位的值,來欺騙伺服器。

反爬蟲進階策略:
1.像知乎一樣,在登錄的表單裡面放入一個隱藏欄位,裡面會有一個隨機數,每次都不一樣,這樣除非你的爬蟲腳本能夠解析這個隨機數,否則下次爬的時候就不行了。
2.記錄訪問的ip,統計訪問次數,如果次數太高,可以認為這個ip有問題。

爬蟲進階策略:
1.像這篇文章提到的,爬蟲也可以先解析一下隱藏欄位的值,然後再進行模擬登錄。
2.爬蟲可以使用ip代理池的方式,來避免被發現。同時,也可以爬一會休息一會的方式來降低頻率。另外,伺服器根據ip訪問次數來進行反爬,再ipv6沒有全面普及的時代,這個策略會很容易造成誤傷。(這個是我個人的理解)。

通過Cookie限制進行反爬蟲:
和Headers校驗的反爬蟲機制類似,當用戶向目標網站發送請求時,會再請求數據中攜帶Cookie,網站通過校驗請求信息是否存在Cookie,以及校驗Cookie的值來判定發起訪問請求的到底是真實的用戶還是爬蟲,第一次打開網頁會生成一個隨機cookie,如果再次打開網頁這個Cookie不存在,那麼再次設置,第三次打開仍然不存在,這就非常有可能是爬蟲在工作了。

反爬蟲進進階策略:
1.數據投毒,伺服器在自己的頁面上放置很多隱藏的url,這些url存在於html文件文件裡面,但是通過css或者js使他們不會被顯示在用戶看到的頁面上面。(確保用戶點擊不到)。那麼,爬蟲在爬取網頁的時候,很用可能取訪問這個url,伺服器可以100%的認為這是爬蟲乾的,然後可以返回給他一些錯誤的數據,或者是拒絕響應。

爬蟲進進階策略:
1.各個網站雖然需要反爬蟲,但是不能夠把網路,谷歌這樣的搜索引擎的爬蟲給幹了(幹了的話,你的網站在網路都說搜不到!)。這樣爬蟲應該就可以冒充是網路的爬蟲去爬。(但是ip也許可能被識破,因為你的ip並不是網路的ip)

反爬蟲進進進階策略:
給個驗證碼,讓你輸入以後才能登錄,登錄之後,才能訪問。

爬蟲進進進階策略:
圖像識別,機器學習,識別驗證碼。不過這個應該比較難,或者說成本比較高。

參考資料:
廖雪峰的python教程
靜覓的python教程
requests庫官方文檔
segmentfault上面有一個人的關於知乎爬蟲的博客,找不到鏈接了

㈦ python爬蟲---爬取LOL雲頂之弈數據

本來是想爬取之後作最佳羈絆組合推算,但是遇到知識點無法消化(知識圖譜),所以暫時先不組合了,實力有限

庫的安裝

1.requests  #爬取棋子數據

2.json  #棋子數據為js動態,需使用json解析

3.BeautifulSoup

實戰前先新建個lol文件夾作為工作目錄,並創建子目錄data,用於存放數據。

1.爬取數據,新建個py文件,用於爬取雲頂數據,命念中塌名為data.py

1.1定義個req函數,方便讀取。//需設定編碼格式,否則會出現亂碼

def Re_data(url):

re = requests.get(url)

re.encoding = 'gbk'

data = json.loads(re.text)

return data['data']

1.2定義個Get函數,用於讀取數據並使用保存函數進行保存數據,保存格式為json。

def Get_data():

# 獲取數據並保存至data目錄

base_url = 'https://game.gtimg.cn/images/lol/act/img/tft/js/'培灶

chess = Re_data(base_url + 'chess.js')

race = Re_data(base_url + 'race.js')

job = Re_data(base_url + 'job.js')

equip = Re_data(base_url + 'equip.js')

Save_data(chess,race,job,equip)

1.3定義save函數實現讀取的數據進行文件保存,保存目錄為工作目錄下的data文件夾仔圓。

def Save_data(t_chess,t_race,t_job,t_equip):

with open('./data/chess.json','w') as f:

json.mp(t_chess,f,indent='\t')

with open('./data/race.json','w') as f:

json.mp(t_race,f,indent='\t')

with open('./data/job.json','w') as f:

json.mp(t_job,f,indent='\t')

with open('./data/equip.json','w') as f:

json.mp(t_equip,f,indent='\t')

1.4定義主函數main跑起來

if __name__ == '__main__':

start = time.time()

Get_data()

print('運行時間:' + str(time.time() - start) + '秒')

至此,數據爬取完成。

2.種族和職業進行組合。

2.1未完成 //未完成,使用窮舉方法進行組合會出現內存不夠導致組合失敗(for循環嵌套導致數組內存超限)

//待學習,使用知識圖譜建立組合優選,可參考:https://ya360.com/12447.html

期間遇到的問題:

1.爬取棋子數據時為動態js載入,需通過json模塊的loads方法獲取

2.3層for循環嵌套數據量大,導致計算失敗,需優化計算方法。

㈧ python爬蟲怎麼做

大到各類搜索引擎,小到日常數據採集,都離不開網路爬蟲。爬蟲的基本原理很簡單,遍歷網路中網頁,抓取感興趣的數據內容。這篇文章會從零開始介紹如何編寫一個網路爬蟲抓取數據做告宏,然後會一步步逐漸完善爬蟲的抓取功能。

工具安裝

我們需要安裝python,python的requests和BeautifulSoup庫。我們用Requests庫用抓取網頁的內容,使用BeautifulSoup庫來從網頁中提取數據。

安裝python

運行pipinstallrequests

運行pipinstallBeautifulSoup

抓取網頁

完成必要工具安裝後,我們正式開始編寫我們的爬蟲。我們的第一個任務是要抓取所有豆瓣上的圖書信息。我們以/subject/26986954/為例,首先看看開如何抓取網頁的內容。

使用python的requests提供的get()方法我們可以非常簡單的獲取的指定網頁的內純冊容,代碼如下:

提取內容

抓取到網頁的內容後,我們要做的就是提取出我們想要的內容。在我們的第一個例子中,我們只需要提取書名。首先我們導入BeautifulSoup庫,使用BeautifulSoup我們可以非常簡單的提取網頁的特定內容。

連續抓取網頁

到目前為止,我們已經可以抓取單個網頁的內容了,現在讓我們看看如何抓取整個網站的內容。我們知道網頁之間是通過超鏈接互相連接在一起的,通過鏈接我們可以訪問整個網路。所以我們可以從每個頁面提取出包含指向其它網頁的鏈接,然後重復的對新鏈接進行抓取。

通過以上幾步我們就可以寫出一個最原始的爬蟲。在理解了爬蟲原理的基礎上,我們可以進一步對爬蟲進行完善。

寫過一個系列關於爬蟲的文章:/i6567289381185389064/。感興趣的可以前往查看。

Python基本環境的搭建,爬蟲的基本原理以及爬蟲的原型

Python爬蟲入門(第1部分)

如何使用BeautifulSoup對網頁內容進行提取

Python爬蟲入門(第2部分)

爬蟲運行時數據的存儲數據,以SQLite和MySQL作為示例

Python爬蟲入門(第3部分)

使用seleniumwebdriver對動態網頁進行抓取

Python爬蟲入門(第4部分)

討論了如何處理網站的反爬蟲策略

Python爬友如蟲入門(第5部分)

對Python的Scrapy爬蟲框架做了介紹,並簡單的演示了如何在Scrapy下進行開發

Python爬蟲入門(第6部分)

㈨ python爬蟲是什麼

Python爬蟲是指在某種原因進行互聯網請求獲取信息

㈩ 如何用Python爬取數據

方法/步驟

  • 在做爬取數據之前,你需要下載安裝兩個東西,一個是urllib,另外一個是python-docx。

  • 7

    這個爬下來的是源代碼,如果還需要篩選的話需要自己去添加各種正則表達式。

熱點內容
php的點餐系統源碼 發布:2024-11-01 20:13:53 瀏覽:714
拜占庭演算法 發布:2024-11-01 20:10:31 瀏覽:357
xcode編譯參數 發布:2024-11-01 20:00:04 瀏覽:665
蘋果5怎麼設置密碼鎖屏 發布:2024-11-01 19:54:55 瀏覽:124
寶塔上傳文件夾 發布:2024-11-01 19:39:50 瀏覽:257
java雲編譯器 發布:2024-11-01 19:34:24 瀏覽:385
免費源碼分享網 發布:2024-11-01 19:29:19 瀏覽:855
硬碟8mb緩存 發布:2024-11-01 19:20:02 瀏覽:192
抖音默認的青少年密碼是多少 發布:2024-11-01 19:18:36 瀏覽:906
電腦伺服器名字在哪裡找 發布:2024-11-01 19:13:27 瀏覽:2