中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么創建基于Python的爬蟲

發布時間:2021-10-28 16:50:08 來源:億速云 閱讀:153 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么創建基于Python的爬蟲”,在日常操作中,相信很多人在怎么創建基于Python的爬蟲問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么創建基于Python的爬蟲”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是網頁抓取?

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

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

怎么創建基于Python的爬蟲

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

我們需要做什么:

  •  獲取我們要從中抓取數據的頁面的URL

  •  復制或下載此頁面的HTML內容

  •  處理此HTML內容并獲取所需的數據

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

配套

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

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

讓我們深入研究代碼

首先,讓我們導入將要使用的庫。

# 導入庫  from selenium import webdriver from bs4 import BeautifulSoup

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

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

# chrome驅動程序的路徑  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)

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

# 進入登錄頁面  browser.get('http://playsports365.com/default.aspx')  # 按姓名搜索標簽  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')

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

# 添加登錄憑證  email.send_keys('********')  password.send_keys('*******')  # 點擊提交按鈕  login.click()  email.send_keys('********')  password.send_keys('*******')  login.click()

成功進入系統后,我們將轉到所需的頁面并收集HTML內容。

# 成功登錄后,轉到“ OpenBets”頁面  browser.get('http://playsports365.com/wager/OpenBets.aspx')  # 獲取HTML內容  requiredHtml = browser.page_source

現在,當我們有了HTML內容時,剩下的唯一事情就是處理這些數據。我們將在Beautiful Soup和html5lib庫的幫助下做到這一點。

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

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

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

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

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

# python <程序名稱>

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

如果我們抓取經常更新內容的網站(例如,運動成績表),則應創建cron任務以在特定時間間隔啟動該程序。

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

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

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

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

&ndash; 開發自己的IP地址基礎架構;

&ndash; 使用Tor &ndash;該主題可以專門討論幾篇大型文章,而實際上已經完成了;

&ndash; 使用商業代理網絡;

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

到此,關于“怎么創建基于Python的爬蟲”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣威市| 胶南市| 博罗县| 定安县| 广宁县| 来安县| 拉孜县| 宜春市| 志丹县| 瑞金市| 长沙县| 喀什市| 新平| 清新县| 芜湖县| 安福县| 什邡市| 威信县| 精河县| 马关县| 元谋县| 蒙山县| 资溪县| 廊坊市| 肃宁县| 射洪县| 屏南县| 井陉县| 志丹县| 周口市| 平湖市| 大理市| 大庆市| 鲜城| 佛冈县| 常山县| 凌云县| 满城县| 文登市| 拉孜县| 沙田区|