(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'}
本文链接:http://task.lmcjl.com/news/6702.html