中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

快速指南:如何創(chuàng)建基于Python的抓取工具

發(fā)布于:2021-01-07 11:28:11

0

129

0

python 抓取工具 后端

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

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

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

什么是網(wǎng)頁抓?。?/span>

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

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

{xunruicms_img_title}

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

我們需要做什么:

  • 獲取我們要從中抓取數(shù)據(jù)的頁面的URL

  • 復(fù)制或下載此頁面的HTML內(nèi)容

  • 處理此HTML內(nèi)容并獲取所需的數(shù)據(jù)

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

配套

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

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

讓我們深入研究代碼

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

# import libraries from selenium import webdriver from bs4 import BeautifulSoup

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

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

# path to chrome driver chromedriver = '/usr/local/bin/chromedriver' options = webdriver.ChromeOptions() options.add_argument('headless') #open a headless browser  browser = webdriver.Chrome(executable_path=chromedriver,  chrome_options=options)

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

# go to login page browser.get('http://playsports365.com/default.aspx') # search tags by name email = browser.find_element_by_name('ctl00$MainContent$ctlLogin$_UserName') password =  browser.find_element_by_name('ctl00$MainContent$ctlLogin$_Password') login =  browser.find_element_by_name('ctl00$MainContent$ctlLogin$BtnSubmit')

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

# add login credentials email.send_keys('********') password.send_keys('*******') #click on submit button login.click()

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

# after successful login, go to the "OpenBets" page browser.get('http://playsports365.com/wager/OpenBets.aspx') # get HTML content requiredHtml = browser.page_source

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

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

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

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

# receiving tags and printing values rows = my_table.findChildren(['th', 'tr']) for row in rows:  cells = row.findChildren('td')  for cell in cells:  value = cell.text  print (value)

要執(zhí)行此程序,您將需要使用pip安裝Selenium,Beautiful Soup和html5lib 。安裝庫后,命令#python <程序名稱>將把這些值打印到控制臺中。

這就是您抓取任何網(wǎng)站的方式。

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

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

有時(shí),服務(wù)器會(huì)讓同一個(gè)人無聊地發(fā)出一堆請求,而服務(wù)器禁止它。不幸的是,不僅人們的耐心有限。

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

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

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

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

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

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

概要

Web抓取的使用正在積極增加,特別是在大型電子商務(wù)公司中。它可以幫助他們競爭,分析競爭對手,控制價(jià)格趨勢和研究新產(chǎn)品。如今,數(shù)據(jù)收集已經(jīng)變得時(shí)尚,酷炫并且非常有趣。您可以獲得從未有人處理過的數(shù)據(jù)集來做新的事情。但是,請不要忘記服務(wù)器施加的限制,包括禁令。它們的出現(xiàn)是為了保護(hù)站點(diǎn)免受不友好的請求和DDoS攻擊。值得尊重他人的工作,即使服務(wù)器沒有任何保護(hù),這也不是無限請求的原因。特別是如果這可能導(dǎo)致其關(guān)閉–沒有人取消刑事處罰。