1. 程式人生 > >網頁爬蟲學習之獲取網頁中標籤內容

網頁爬蟲學習之獲取網頁中標籤內容

(1)本地網頁,通過網頁中的元素進行篩選想要獲取的內容

web_parseDemo01.py
from bs4 import BeautifulSoup
#1、解析網頁內容,網頁的構成
with open('C:/Users/GXY/PycharmProjects/untitled/homework.html','r',encoding='UTF-8') as wb_data:
Soup=BeautifulSoup(wb_data,'lxml') #"lxml"是可以用來解析html網頁的其中一個第三方庫,wb_data是用來解析的檔案
# print(Soup)
#2、描述要抓取的元素位置
images=Soup.select('body > div.main-content > ul > li > img')
titles=Soup.select('body > div.main-content > h2')
hrefs=Soup.select('body > div.header > ul > li > a')
# print(images,titles,hrefs,sep='\n..................\n')
#3、處理標籤中的文字,篩選所需要的資訊
#a.使用for迴圈來取出所有的元素,然後對元素使用方法
#for href in hrefs:
# print(href.get_text())
#...........................
#通過zip()將所有元素放在一個容器中進行迴圈,並且對其中的每一個元素進行字典構造,
for image,title,href in zip(images,titles,hrefs):
data={
'image':image.get('src'),#image的屬性不同於其它文字屬性,其連結來自於img的src屬性,所以通過get()進行獲取
'title':title.get_text(),
'href':href.get_text()
}
print(data)

執行結果:

{'image': 'images/nz1.jpg', 'title': 'The beach', 'href': 'home'}
{'image': 'images/nz2.jpg', 'title': 'the abstract', 'href': 'site'}

 

(2)真實網頁,通過網頁中的元素進行篩選想要獲取的內容

web_parseDemo02.py
from bs4 import  BeautifulSoup
import requests

url='http://s.tuniu.com/search_complex/whole-cd-0-%E9%A9%AC%E5%B0%94%E4%BB%A3%E5%A4%AB/'#取一個可以訪問的真實網址(本人僅僅是用來學習,無其它用途)。
web_data=requests.get(url)
soup=BeautifulSoup(web_data.content,'lxml')
#print(soup)
hrefs=soup.select('.J_banner > li > a')#.J_banner為CSS樣式,即class=.J_banner的樣式
#images1=soup.select('.thebox > li:nth-of-type(1)')
#images=soup.select('.thebox > li:nth-of-type(1) > div:nth-of-type(1) > a:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(1) > img:nth-of-type(1)')
#images=soup.select('.thebox > li > div > a > div > div > img')#一次性取不到的時候只能逐層取
images=soup.select('.thebox > li > div > a > div > div > img')
#print(hrefs)

for href,image in zip(hrefs,images):
data={
'href':href.get('href'),#注意,是title,沒有s,是列表中的被遍歷的物件:物件對應的值
'image':image.get('data-src')#注意,當一個標籤有多個屬性時,需要通過該標籤物件呼叫get()進行獲取屬性的內容,img標籤的獲取是通過“data-src”或“src”,a標籤是href屬性等。
}
print(data)
執行結果:

{'href': 'http://www.tuniu.com/tools/choice/', 'image': '//m.tuniucdn.com/fb2/t1/G5/M00/4B/5B/Cii-tFpq0ZGIH31vAKA6IduvD-AAAC2GAAAAAAAoDo5706_w160_h90_c1_t0.jpg'}
{'href': 'http://www.tuniu.com/g38636/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G1/M00/3E/36/Cii9EVbyR2GIYpAGABx_GcrnlmgAACvfQL8kM4AHH8x960_w160_h90_c1_t0.jpg'}
{'href': 'http://www.tuniu.com/g3412457/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G2/M00/83/40/Cii-T1fqKEmILjyJAAYAW5VTCYQAACzhgKiKAUABgBz980_w160_h90_c1_t0.jpg'}
{'href': 'http://www.tuniu.com/g38629/pkg-all-0/', 'image': '//m.tuniucdn.com/filebroker/cdn/olb/bd/2e/bd2e8f69bf6a281e6ba82ac944691133_w160_h90_c1_t0.jpg'}
{'href': 'http://www.tuniu.com/g51091/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G2/M00/41/1D/Cii-T1hGam6IMZqDAANSP7BE3ysAAFNQAD7RogAA1JX370_w160_h90_c1_t0.jpg'}
{'href': 'http://www.tuniu.com/g38604/pkg-all-0/', 'image': '//m.tuniucdn.com/filebroker/cdn/prd/c3/c4/c3c41999583e9d66173291c11546778b_w160_h90_c1_t0.jpg'}
{'href': 'http://www.tuniu.com/g38641/pkg-all-0/', 'image': '//m.tuniucdn.com/fb2/t1/G1/M00/16/B2/Cii9EVbX5J2IV01nACFXGNk8OL8AACdtAHFhtYAIVcw700_w160_h90_c1_t0.jpg'}