爬蟲 網頁 資料獲取規則
阿新 • • 發佈:2018-12-10
python 正則中re 模組有兩種方式
pattern = re.compile(r"\d")
m = pattern.match() 從起始位置開始查詢 返回第一個符合規則的物件 pattern.search() 從任何位置向後查詢 返回第一個符合規則的物件 pattern.finditer() 所有的全部匹配 返回的是一個迭代器 pattern.findall() 所有的全部匹配 返回列表 pattern.split() 分割字串 返回列表 pattern.sub(“abc”,str) 替換
m.group() 檢視匹配到的
match(str,起始位置,結束位置) search(str,begin,end)
規則 pattern = re.compile(r" 規則") pattern.findall(文字)
re.I 表示忽略大小寫 re.S 表示全文匹配
lxml 中的xpath 方法 值得一提的是 這裡面有一個模糊查詢 contains(@id,‘可以是id對應的不完整的值’) 例子 (’//div[@class=“pagecenter p3”]//strong’) /text() 獲取內容 /@vlaue 獲取《》裡的值 例如 /@href
beautifulSoup 處理網頁檔案的 比正則好用多了
建立一個beautifulsoup物件 soup= beautifulsoup(html,lxml,編碼方式預設一樣) #開啟本地檔案的方式來建立物件 #soup = beautifulsoup(open(’index.html‘)) #格式化輸出soup物件的內容 print soup.prettify 查詢 1 tag(標籤) print soup.title標籤/head頭/a/p 輸出 類似 #<title> neirong </title> 好像只返回一個 name 和 attrs 二級屬性 print soup.title.name #輸出的是標籤本身的名稱 print soup.title.attrs #輸出的是title的所有屬性得到的是一個字典 print soup.title.get["屬性的名稱"] 這樣得到的就是某一屬性的內容 print soup.a.string #string 是顯示裡面的內容 1. find_all 查詢 返回的是bs4.element.ResultSet 型別 不能轉化為str 1.傳字串 soup.find_all(簡單的字串引數) 2.傳正則表示式 3.傳引數 2.select 查詢 soup.select()返回的是 list 1.標籤名查詢 soup.select("title") 2.類名查詢class 加點 soup.select(".sister") 3.id查詢 加# soup.select("#link") 4.組合查詢 例如查詢p標籤id等於link內容 soup.select("p #link") 5.屬性查詢 查詢時加入屬性元素 soup.select("a[class="sisect"]")
select查詢返回的都是列表形式 遍歷輸出 然後用get_text()獲取內容
找到了之後 用.get('href') 方法可以拿出裡面的值