beautifulsoup部分知識點

来源:http://www.cnblogs.com/summerkxy/archive/2017/06/27/7083599.html
-Advertisement-
Play Games

1 html_doc = "" 2 sp = BeautifulSoup(html_doc,"html.parser") 3 print(sp.p['class']) 4 #['body','strikeout'] 5 print(sp.p['id']) 6 #zhangsan 7 8 html_d... ...


 1 html_doc = "<p class='body strikeout' id='zhangsan'></p>"  
 2 sp = BeautifulSoup(html_doc,"html.parser")  
 3 print(sp.p['class'])  
 4 #['body','strikeout']  
 5 print(sp.p['id'])  
 6 #zhangsan  
 7   
 8 html_doc = "<p>Back to the <a rel="index">homepage</a></p>"  
 9 #想要得到a標簽的rel屬性值  
10 print(sp.a['rel'])  
11 #['index']  
12   
13 .string 只能獲取子標簽是是0個或者1個的內容  
14 “<p>123<a href="index">abc</a></p>15 sp.p.string  #None  
16 sp.a.string #abc  
17 “<p><a href="index">abc</a></p>18 sp.p.string=sp.a.string #abc  
19   
20 #獲取兄弟節點  
21 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>22 a_sp = sp.a  
23 print(a_sp.next_sibling)#得到div節點  
24 #parent節點同理  
25 #.previous_sibling 上一個節點  
26   
27   
28 #獲取所有兄弟節點,迭代  
29 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>30 for i in sp.find("a").next_siblings:  
31      print(i)  
32 #<div rel="bey">abc</div><a rel="index">def</a>  
33   
34 #下一個節點,有可能與next_sibling相同也可不相同  
35 “<p class="st">123<a rel="index">homepage</a><div rel="bey">abc</div><a rel="index">def</a></p>36 sp.find("a").next_element #homepage  
37 sp.find("a").next_element.next_element.next_element #<div rel="bey">abc</div>  
38 sp.find("a").next_element.next_element.next_element.next_element #abc  
39 #next_elements 結果就是next_element結果的迭代  
40   
41 #find(re.compile("^b"))使用正則表達式查找以b開頭的標簽也就是body  
42   
43 #True  
44 for i in sp.find(True):  
45      print(i)  
46 #匹配所有子節點  
47   
48 #find_all根據id、class查找節點,當有多個屬性值的時候,要class保證值的順序否則匹配不到結果  
49 sp.find_all("p",class_="sister")  
50 sp.find_all(id="link1")  
51 sp.find_all(class_="sister")  
52   
53 #查找url中帶有elis的連接  
54 sp.find_all(href=re.compile("elis"))  
55   
56 #查找頁面中指定位置的所有href  
57 for i in sp.find("div",class_="xiaoba").find_all("a"):  
58      print(i.get("href"))  
59   
60 #find_all的attrs參數 搜索自定義屬性的標簽,其中attrs的值是dist  
61 sp.find_all(attrs={"data-info":"xiaobai"})  
62   
63 #通過標簽中的值來過濾標簽  
64 sp.find_all("a",text="xiaobai")#篩選值是xiaobai的標簽  
65   
66 #limit限制返回結果的條數  
67 sp.find_all("a",limit=2)返回前兩條數據  
68   
69 #查找直接子標簽  
70 sp.select("p > a")#p標簽的直接子標簽a,可能是多個或一個,返回列表,是直接子標簽  
71 sp.select("p > a:nth-of-type(1)")#返回第一個直接子標簽,從1開始  
72   
73 #查找子標簽下的指定子標簽,id值或class的值作為查找條件,直接子標簽  
74 sp.select("div > .class_name")  
75 sp.select("div > #id_name")  
76 sp.select("div > ul > li > span > b")#支持連貫查詢  
77   
78 #按照css類名查找  
79 sp.select(".class_name"),返回列表  
80   
81 #id查找  
82 sp.select("#id_name")  
83   
84 #標簽名、class_name、id_name組合查找元素  
85 sp.select("a.class_name")  
86 sp.select("a#id_name")  
87   
88 #標簽名、屬性名組合  
89 sp.select("a[data-info]")#查找a標簽中帶有data-info屬性的a標簽  
90 sp.select("a[data-info='xiaobai']")查找data-info的值是xiaobai的標簽  
91 #還支持類似正則表達式的用法  
92 sp.select("a[data-info$="is"]")#查找屬性值是以is結尾的標簽  
93 sp.select("a[data-info^="is"]")#開頭  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從頭開始的java編程——JAVA開發環境搭建 一、什麼是java的開發環境? 顧名思義java的開發環境是提供並保證整個java程式開發運行的必要的環境,搭建java開發環境是開始java編程的敲門磚,正所謂巧婦難為無米之炊,你編寫再炫酷的代碼,沒有相應的開發環境也是一堆意義不明的符號亂碼。 編譯 ...
  • 題目背景 1997年普及組第一題 題目描述 有一個n*m方格的棋盤,求其方格包含多少正方形、長方形 輸入輸出格式 輸入格式: n,m因為原來數據太弱,現規定m小於等於5000,n小於等於5000(原來是100,100) 輸出格式: 方格包含多少正方形、長方形 輸入輸出樣例 輸入樣例#1: 2 3 輸 ...
  • 題目描述 給定n個各不相同的無序字母對(區分大小寫,無序即字母對中的兩個字母可以位置顛倒)。請構造一個有n+1個字母的字元串使得每個字母對都在這個字元串中出現。 輸入輸出格式 輸入格式: 第一行輸入一個正整數n。 以下n行每行兩個字母,表示這兩個字母需要相鄰。 輸出格式: 輸出滿足要求的字元串。 如 ...
  • 在技術方面無論我們怎麼學習,總感覺需要提升自已不知道自己處於什麼水平了。但如果有清晰的指示圖供參考還是非常不錯的,這樣我們清楚的知道我們大概處於那個階段和水平。 Java程式員 高級特性 反射、泛型、註釋符、自動裝箱和拆箱、枚舉類、可變 參數、可變返回類型、增強迴圈、靜態導入 核心編程 IO、多線程 ...
  • 1 var radios = Ext.create('Ext.form.Panel', { 2 title: 'RadioGroup Example', 3 width: 300, 4 height: 125, 5 bodyPadding: 10, 6 renderTo: Ext.getBody()... ...
  • 1 #-*- coding:utf-8 -*- 2 from urllib import request 3 from bs4 import BeautifulSoup 4 from urllib import parse 5 import pymysql 6 url = "http://searc ...
  • 題目描述 給出一個長度為N的非負整數序列A[i],對於所有1 ≤ k ≤ (N + 1) / 2,輸出A[1], A[3], …, A[2k - 1]的中位數。[color=red]即[/color]前1,3,5,……個數的中位數。 輸入輸出格式 輸入格式: 輸入文件median.in的第1行為一個 ...
  • 一、獲取Tag 1.find_all方法 (1)find_all(name='tag_name',attrs,recursive,text,**kwargs) name:tag對應的名稱,當包括多個tag時,返回的是一個列表,可以利用列表功能選取對應的tag。 href:tag的屬性,常用屬性cla ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...