1. 程式人生 > >爬蟲 網頁 資料獲取規則

爬蟲 網頁 資料獲取規則

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')   方法可以拿出裡面的值