成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

快速指南:如何創(chuàng)建基于Python的爬蟲

開發(fā) 后端
在本篇文章中,學(xué)習(xí)如何創(chuàng)建基于Python的刮板。深入研究代碼,看看它是如何工作的。

Web抓取的使用正在積極增加,特別是在大型電子商務(wù)公司中,Web抓取是一種收集數(shù)據(jù)以競爭,分析競爭對手和研究新產(chǎn)品的方式。Web抓取是一種從網(wǎng)站提取信息的方法。在本篇文章中,學(xué)習(xí)如何創(chuàng)建基于Python的刮板。深入研究代碼,看看它是如何工作的。

[[339656]]

在當今的大數(shù)據(jù)世界中,很難跟蹤正在發(fā)生的一切。對于需要大量信息才能取得成功的企業(yè)來說,情況變得更加復(fù)雜。但是首先,他們需要以某種方式收集此數(shù)據(jù),這意味著他們必須處理數(shù)千個資源。

有兩種收集數(shù)據(jù)的方法。您可以使用API媒體網(wǎng)站提供的服務(wù),這是獲取所有新聞的最佳方法。而且,API非常易于使用。不幸的是,并非每個網(wǎng)站都提供此服務(wù)。然后剩下第二種方法-網(wǎng)頁抓取。

什么是網(wǎng)頁抓取?

這是一種從網(wǎng)站提取信息的方法。HTML頁面不過是嵌套標記的集合。標簽形成某種樹,其根在<html>標簽中,并將頁面分成不同的邏輯部分。每個標簽可以有其自己的后代(子級)和父級。

例如,HTML頁面樹可以如下所示:

要處理此HTML,您可以使用文本或樹。繞過這棵樹是網(wǎng)頁抓取。我們只會在所有這些多樣性中找到我們需要的節(jié)點,并從中獲取信息!這種方法主要集中在將非結(jié)構(gòu)化的HTML數(shù)據(jù)轉(zhuǎn)換成易于使用的結(jié)構(gòu)化信息到數(shù)據(jù)庫或工作表中。數(shù)據(jù)抓取需要一個機器人來收集信息,并通過HTTP或Web瀏覽器連接到Internet。在本指南中,我們將使用Python創(chuàng)建刮板。

我們需要做什么:

  •  獲取我們要從中抓取數(shù)據(jù)的頁面的URL
  •  復(fù)制或下載此頁面的HTML內(nèi)容
  •  處理此HTML內(nèi)容并獲取所需的數(shù)據(jù)

此序列使我們可以彈出所需的URL,獲取HTML數(shù)據(jù),然后對其進行處理以接收所需的數(shù)據(jù)。但是有時我們需要先進入網(wǎng)站,然后再轉(zhuǎn)到特定的網(wǎng)址以接收數(shù)據(jù)。然后,我們必須再增加一個步驟-登錄該網(wǎng)站。

配套

我們將使用Beautiful Soup庫來分析HTML內(nèi)容并獲取所有必需的數(shù)據(jù)。這是抓取HTML和XML文檔的絕佳Python包。

Selenium庫將幫助我們在一個會話中使抓取器進入網(wǎng)站并轉(zhuǎn)到所需的URL地址。Selenium Python 可以幫助您執(zhí)行諸如單擊按鈕,輸入內(nèi)容等操作。

讓我們深入研究代碼

首先,讓我們導(dǎo)入將要使用的庫。 

  1. # 導(dǎo)入庫  
  2. from selenium import webdriver 
  3. from bs4 import BeautifulSoup 

然后,我們需要向瀏覽器的驅(qū)動程序展示Selenium啟動網(wǎng)絡(luò)瀏覽器的方式(我們將在這里使用Google Chrome)。如果我們不希望機器人顯示W(wǎng)eb瀏覽器的圖形界面,則將在Selenium中添加“ headless”選項。

沒有圖形界面(無頭)的Web瀏覽器可以在與所有流行的Web瀏覽器非常相似的環(huán)境中自動管理網(wǎng)頁。但是在這種情況下,所有活動都通過命令行界面或使用網(wǎng)絡(luò)通信進行。 

  1. # chrome驅(qū)動程序的路徑  
  2. chromedriver = '/usr/local/bin/chromedriver'  
  3. options = webdriver.ChromeOptions()  
  4. options.add_argument('headless') #open a headless browser   
  5. browser = webdriver.Chrome(executable_path=chromedriver,   
  6. chrome_options=options) 

設(shè)置瀏覽器,安裝庫并創(chuàng)建環(huán)境之后,我們便開始使用HTML。讓我們進入輸入頁面,找到用戶必須在其中輸入電子郵件地址和密碼的標識符,類別或字段名稱。 

  1. # 進入登錄頁面  
  2. browser.get('http://playsports365.com/default.aspx')  
  3. # 按姓名搜索標簽  
  4. email =  
  5. browser.find_element_by_name('ctl00$MainContent$ctlLogin$_UserName')  
  6. password =   
  7. browser.find_element_by_name('ctl00$MainContent$ctlLogin$_Password')  
  8. login =   
  9. browser.find_element_by_name('ctl00$MainContent$ctlLogin$BtnSubmit') 

然后,我們會將登錄數(shù)據(jù)發(fā)送到這些HTML標簽中。為此,我們需要按下操作按鈕以將數(shù)據(jù)發(fā)送到服務(wù)器。 

  1. # 添加登錄憑證  
  2. email.send_keys('********')  
  3. password.send_keys('*******')  
  4. # 點擊提交按鈕  
  5. login.click()  
  6. email.send_keys('********')  
  7. password.send_keys('*******')  
  8. login.click() 

成功進入系統(tǒng)后,我們將轉(zhuǎn)到所需的頁面并收集HTML內(nèi)容。 

  1. # 成功登錄后,轉(zhuǎn)到“ OpenBets”頁面  
  2. browser.get('http://playsports365.com/wager/OpenBets.aspx')  
  3. # 獲取HTML內(nèi)容  
  4. requiredHtml = browser.page_source 

現(xiàn)在,當我們有了HTML內(nèi)容時,剩下的唯一事情就是處理這些數(shù)據(jù)。我們將在Beautiful Soup和html5lib庫的幫助下做到這一點。

html5lib是一個Python軟件包,實現(xiàn)了受現(xiàn)代Web瀏覽器影響的HTML5抓取算法。一旦獲得了內(nèi)容的標準化結(jié)構(gòu),就可以在HTML標記的任何子元素中搜索數(shù)據(jù)。我們正在尋找的信息在表格標簽中,因此我們正在尋找它。 

  1. soup = BeautifulSoup(requiredHtml, 'html5lib')  
  2. table = soup.findChildren('table') 
  3. my_table = table[0] 

我們將找到父標記一次,然后遞歸地遍歷子標記并打印出值。 

  1. # 接收標簽和打印值  
  2. rows = my_table.findChildren(['th', 'tr'])  
  3. for row in rows:  
  4.  cells = row.findChildren('td')  
  5.  for cell in cells:  
  6.  value = cell.text  
  7.  print (value) 

要執(zhí)行此程序,您將需要使用pip安裝Selenium,Beautiful Soup和html5lib。安裝庫之后,命令如下: 

  1. # python <程序名稱> 

將把這些值打印到控制臺中,這就是您抓取任何網(wǎng)站的方式。

如果我們抓取經(jīng)常更新內(nèi)容的網(wǎng)站(例如,運動成績表),則應(yīng)創(chuàng)建cron任務(wù)以在特定時間間隔啟動該程序。

非常好,一切正常,內(nèi)容被抓取,數(shù)據(jù)被填充,除了這之外,其他一切都很好,這就是我們要獲取數(shù)據(jù)的請求數(shù)。

有時,服務(wù)器會厭倦同一個人發(fā)出一堆請求,而服務(wù)器禁止它。不幸的是,人們的耐心有限。

在這種情況下,您必須掩飾自己。禁止的最常見原因是403錯誤,以及在IP被阻止時向服務(wù)器發(fā)送的頻繁請求。服務(wù)器可用并能夠處理請求時,服務(wù)器會拋出403錯誤,但出于某些個人原因,拒絕這樣做。第一個問題已經(jīng)解決了–我們可以通過使用html5lib生成偽造的用戶代理來偽裝成人類,并將操作系統(tǒng),規(guī)范和瀏覽器的隨機組合傳遞給我們的請求。在大多數(shù)情況下,這樣可以很好地準確地收集您感興趣的信息。

但是有時僅將time.sleep()放在正確的位置并填寫請求標頭是不夠的。因此,您需要尋找功能強大的方法來更改此IP。要抓取大量數(shù)據(jù),您可以:

– 開發(fā)自己的IP地址基礎(chǔ)架構(gòu);

– 使用Tor –該主題可以專門討論幾篇大型文章,而實際上已經(jīng)完成了;

– 使用商業(yè)代理網(wǎng)絡(luò);

對于網(wǎng)絡(luò)抓取的初學(xué)者來說,最好的選擇是與代理提供商聯(lián)系,例如Infatica等,他們可以幫助您設(shè)置代理并解決代理服務(wù)器管理中的所有困難。收集大量數(shù)據(jù)需要大量資源,因此無需通過開發(fā)自己的內(nèi)部基礎(chǔ)結(jié)構(gòu)來進行代理來“重新發(fā)明輪子”。甚至許多最大的電子商務(wù)公司都使用代理網(wǎng)絡(luò)服務(wù)將代理管理外包,因為大多數(shù)公司的第一要務(wù)是數(shù)據(jù),而不是代理管理。

 

責(zé)任編輯:龐桂玉 來源: 運維派
相關(guān)推薦

2024-06-07 08:56:43

HTTPPythonSelenium

2020-10-26 08:31:41

Python爬蟲開發(fā)

2017-11-29 15:21:53

PythonScrapy爬蟲

2020-01-08 11:04:27

混合云云計算私有云

2018-06-12 13:12:15

編程語言Python爬蟲

2020-11-17 08:43:20

ElasticSear

2023-01-14 08:12:53

KnowTopic配置

2022-08-26 10:19:03

企業(yè)機密管理自動化

2021-03-07 09:05:45

Pytorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2023-12-19 09:36:35

PostgreSQL數(shù)據(jù)庫開源

2011-03-08 16:50:35

2024-05-15 15:27:39

2024-01-03 16:01:23

2025-01-21 11:52:12

AnsiblePython自動化運維

2020-09-29 07:24:14

Python字典數(shù)據(jù)

2021-11-15 05:44:16

Python虛擬環(huán)境開發(fā)

2020-03-06 09:58:54

IT融資技術(shù)

2016-11-08 09:29:11

數(shù)據(jù)構(gòu)建用戶模型

2016-04-26 10:43:05

數(shù)據(jù)分析用戶行為模型
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 全部免费毛片在线播放网站 | 国产精品高清在线 | 黄色网址免费看 | 国产日韩一区二区 | 欧美亚洲国产一区二区三区 | 欧美日韩国产一区二区三区 | 成人h电影在线观看 | 久久精品视频网站 | 台湾佬久久 | 国产福利在线视频 | 久久免费视频在线 | 国产视频一区在线 | 欧美日韩一区二区视频在线观看 | 亚洲一区二区久久久 | 日韩中文一区二区三区 | 国产精品美女久久久久久久网站 | 羞羞的视频免费在线观看 | 亚洲精品福利视频 | 2019天天操 | 天天草草草 | 国产探花在线精品一区二区 | 精品久久香蕉国产线看观看亚洲 | 喷潮网站 | 免费看片在线播放 | 久久久资源 | 久久久久成人精品 | 激情六月丁香 | 亚洲不卡 | 少妇特黄a一区二区三区88av | 亚洲乱码国产乱码精品精98午夜 | 午夜99| 国产女人与拘做受免费视频 | 久久99精品久久久97夜夜嗨 | 亚洲欧美日韩中文字幕一区二区三区 | 久久精品一区二区三区四区 | 日韩免费视频一区二区 | 亚洲女人天堂成人av在线 | 男女啪啪网址 | 国产乱码精品一品二品 | 色婷婷综合久久久中字幕精品久久 | 国产免费观看久久黄av片涩av |