爬虫(一)—解析本地网页

认识网页结构


  • 形象介绍网页内容:
    • html相当于规划房子里每个屋子的功能。
    • css相当于给每个屋子里进行装修
    • JavaScript则是给每个屋子里配置电器

在网页中的一段代码

<div class='a'>
    <p>hello!</p>
</div>

<div> xxx </div>标签,代表网页中一个区域框架,表示在区域中可装什么东西;<p> </p>标签之间增加文字;class='a'为css修饰;<li></li>标签为列表,在列表题目前加个 点;<img>标签可以插入一张图;<h1></h1>h1-h6标签代表不同字号的标题;<a href=" ">标签可加载链接。<ul></ul>功能类似于缩进,在<li>之前用。

这里写图片描述


网页常见文件类型

  • .js 用以控制html页面代码,实现复杂的页面效果或功能
  • .css 控制html如何展示,让页面展示的美观漂亮
  • .html 用于描述网页的结构,网页的核心

网页分析

一. 使用BeautifulSoup解析网页

    #将html文件用lxml引擎解析,放入soup中
    Soup = BeautifulSoup(html文件,'lxml')

    #在解析出的文件内容中挑选某个因素,select获得的内容是列表
    结果列表  = Soup.select("css selector")

这里写图片描述
运行代码时出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 57: illegal multibyte sequence
问题为读取文件时的字符编码问题,在with open(path,’r’,encoding=’UTF8’)可解决。with open("path",'r') as wb_data: 其中‘r’为读取,‘w’代表写入。

二. 描述要爬取得东西在哪
 变量 = Soup.select(‘元素路径’)
 如何找到路径: 在网页选定的对象处,右击选检查,在对应的html语句处,右击选择copy selector,将复制的内容粘贴在元素路径中即可。select()产生的是一个列表,从标签中获得需要的数据时需要用到for循环。
 CSS Selector: body > div.attribute > ul...路径表示 谁,在哪,第几个,长什么样
 Xpath: /html/body/div[2]/ul/...路径表示 谁,在哪,第几个

三. 从标签中获得需要的数据

#zip函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
#titles = [1, 2, 3]
#images = [3, 4, 5]
#stars = [5, 6, 7]
#zip(titles, images, stars) = [(1,3,5),(2,4,6),(3,5,7)]
#大多数情况下,要提取的内容放在标签中间 例`<p>hello world</p>`,因此需要去除标签,则使用get_text()函数得到标签中间的内容
#图片链接放在<img>标签的src属性里,可利用get()得到属性文本内容
for title, image, star in zip(titles, images, stars):
     title_content = title.get_text()
     image_content = image.get("src")

对在线网页爬取时,通过我遇到的问题,进行更多解析方法的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值