爬蟲系列連接網站與解析 HTML

      網友投稿 674 2022-05-30

      這篇文章是爬蟲系列第三期,講解使用 Python 連接到網站,并使用 BeautifulSoup 解析 HTML 頁面。

      爬蟲系列:連接網站與解析 HTML

      在 Python 中我們使用 requests 庫來訪問目標網站,使用 BeautifulSoup 對獲取的內容進行解析。由于這兩個庫并不是 Python 標準庫,因此需要單獨安裝這兩個庫:

      pip install beautifulsoup4 pip install requests

      下面是獲取網站內容的示例代碼:

      from urllib.error import HTTPError, URLError import requests from bs4 import BeautifulSoup from config import logger_config class ProcessConnection: def __init__(self): logger_name = ‘web_scraping' self._logger_write_file = logger_config.LoggingConfig().init_logging(logger_name) def init_connection(self, uri): # 連接網站 try: session = requests.session() headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"} html = session.get(uri, headers=headers) except (HTTPError, URLError) as e: self._logger_write_file.error('執行 get_sms_data 函數出錯,具體錯誤內容:{message}'.format(message=e)) return False try: bsObj = BeautifulSoup(html.text, features='html.parser') return bsObj except AttributeError as e: self._logger_write_file.error('執行 get_sms_data 函數出錯,具體錯誤內容:{message}'.format(message=e)) return False

      首先使用了 requests 會話對象發送請求,并且設置了 User-agent,這里 User-agent 可以自定,這就為偽造 User-agent 提供了便利,同時也告訴了服務器客戶端接受那些內容類型:

      session = requests.session() headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"}

      網絡如果連接出現了錯誤,對錯誤進行異常處理:

      except (HTTPError, URLError) as e:

      BeautifulSoup 解析 HTML 文檔出現錯誤,拋出 AttributeError:

      except AttributeError as e:

      以上就完成了一個使用 Python 連接網站的過程。這個時候如果沒有異常我們就會拿到網站的 HTML 代碼,之后根據需要進一步對 HTML 進行內容解析,獲取自己需要的內容。

      解析 HTML

      如果你已經確定了目標內容,可能是采集一個名字,一組統計數據,或者一段文字。你的目標內容可能隱藏在一個 HTML “爛泥堆”的第20層標簽里,帶有許多沒用的標簽或 HTML 屬性,你按照目標網站的代碼層級你有可能寫出如下的一行代碼抽取內容:

      bsObj.findAll("table")[4].findAll("tr")[2].find("td").findAll("section")[1].find("a")

      雖然以上寫法可以達到目標,但是這樣的寫法看起來并不是很好。除了代碼欠缺美感之外,還有一個問題就是:當網站管理員對網站稍作修改之后,這行代碼便會失效。

      例如,我們需要獲得自己的公網 IP 地址,我們可以通過查詢這個網站獲得:https://www.pdflibr.com,之后查看網頁源代碼,找到自己的 IP 地址,又如下源代碼:

      IP信息
      當前IP地址:
      106.125.148.85
      歸屬地:
      中國 廣東 廣州

      我們使用 BeautifulSoup 經行解析:

      result = bsObj.findAll("div", {"class": "right-result"}) for child in result: get_ip = child.get_text() print(get_ip)

      這樣就可以獲取自己的 IP 以及 IP 歸屬地。

      HTML Python 爬蟲 網站

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Vue之Vue Router要點梳理
      下一篇:uboot初始化中,為何要設置CPU為SVC模式而不是設置為其他模式
      相關文章
      亚洲第一街区偷拍街拍| 久久久青草青青国产亚洲免观| 亚洲精品无码专区在线播放| 亚洲午夜精品国产电影在线观看| 亚洲熟女少妇一区二区| 亚洲M码 欧洲S码SSS222| 亚洲香蕉在线观看| 亚洲视频无码高清在线| 亚洲乱人伦精品图片| 亚洲国产精品一区二区久| 亚洲精品中文字幕无乱码| 久久亚洲精品无码aⅴ大香| 亚洲黄色免费在线观看| 亚洲午夜视频在线观看| 久久精品国产亚洲av四虎| 亚洲无删减国产精品一区| 亚洲美女aⅴ久久久91| 亚洲免费在线播放| 亚洲精品动漫在线| 亚洲一区二区三区免费观看| 亚洲日本久久久午夜精品| 亚洲免费电影网站| 亚洲国产综合精品中文第一| 亚洲欧美日韩一区二区三区| 大桥未久亚洲无av码在线| www.亚洲精品.com| 国产精品亚洲mnbav网站 | 亚洲国产一区在线观看| 亚洲嫩草影院在线观看| 亚洲一本之道高清乱码| 亚洲综合色丁香婷婷六月图片 | 亚洲国产婷婷六月丁香| 亚洲va在线va天堂va四虎 | 亚洲男人天堂2017| 亚洲男人电影天堂| 亚洲性色AV日韩在线观看| 国产精品亚洲综合天堂夜夜| 久久99亚洲综合精品首页| 亚洲国产精品一区第二页| 亚洲美女人黄网成人女| 亚洲日韩AV一区二区三区中文 |