如何用Python爬取本地网页
一、写出一个简单的静态网页,下面是我随便写的一个
网页源代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>大阿瓦达</title>
<Link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div class="header">
<body background="image/2.png" style=" background-repeat:no-repeat ;
background-size:100% 100%;
background-attachment: fixed;"></body>
</div>
>
<ul class="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Site</a></li>
<li><a href="#">Other</a></li>
</ul>
</div>
<div class="main-content">
<h2>Aritcle</h2>
<ul class="article">
<li>
<img src="image/3.jpg" width="100" height="=90">
<h3>The bath</h3>
<p>Say sonmething</p>
</li>
<li><img src="image/4.png" width="100" height="=90">
<h3>The bath</h3>
<p>Say sonmething</p>
</li>
</ul>
</div>
<div class="footer">
<center><p>©mydadadaw</p> </center>
</div>
</body>
</html>
由于是静态网页,我用的是绝对路径 ,我就直接存放在桌面的目录里: C:\Users\伟\Desktop\网页作业\另一个网页作业\11.html
二、解析网页
第一步:使用BeautifulSoup 解析网页(这个库是python自带的)
Soup = BeautigulSoup(html,’lxml’)
(PS:lxml为解析网页所需要的库,在python中这个库是没有的,所以我们需要进入cmd 进行自主安装“pip install lxml”,这里我会在后面在介绍另外四种解析网页库,分别是:”html parser”,”lxml HTML”, ”lxml xml”, ”html 51ib”)
第二步:扫描抓取的东西在哪
资源 = Soup.select(‘???’)
第三步:从标签中获得你要的information(信息)
<p>Something</p>(网页的段落标签)tittle = Something
rate = 4.0
BeautifulSoup => CSS Select:
一个网页的基本结构
Xpath与CSS解析网页的比较
Xpath:谁,在哪,哪几个 (之后再讲)
CSS Select:谁在哪,第几个,长什么样(我们接下来的爬虫就主要用copy selector找我们需要的内容)
三、写Python代码来爬取我们写的网页
这四行代码就可以实现我们网页的爬取
from bs4 import BeautifulSoup
with open('/Users/伟/Desktop/网页作业/另一个网页作业/11.html','r') as wb_data:
Soup = BeautifulSoup(wb_data,'lxml')
print(Soup)
'''
这里 第行的语句的意思是打开我们这个目录下的这个网页文件,r代表只读
'''
这样就把我们整个网页的数据抓取过来了,但是结果并不是我们想要的
我们要将爬取的网页进行分析
还是点开我们写的网页,抓取我们需要的图片
找到图片img这一行,然后右键,copy,找到,copy selector
body > div.main-content > ul > li:nth-child(1) > img,这就是我们所需要抓取的图片的代码
images = Soup.select('body > div.main-content > ul > li:nth-child(1) > img')
放进pycharm(Python编辑器)中进行抓取
后面再打印我们所抓取的图片信息
print(images)
但我们放进python中,它会报错,因为我们没有按照他的格式进行
因此,我们要将代码
红色的部分删除,就可以得到这一类图片的信息
这里和我们加上的两个图片完全一致
然后我们在抓取我们需要的其他信息,附上全部代码
from bs4 import BeautifulSoup
with open('/Users/伟/Desktop/网页作业/另一个网页作业/11.html','r') as wb_data:
Soup = BeautifulSoup(wb_data,'lxml')
images = Soup.select('body > div.main-content > ul > li > img')
p = Soup.select('body > div.main-content > ul > li > p')
tittle = Soup.select('body > div.main-content > ul > li > h3')
print(images,p,tittle,sep='\n-----\n')
这就是我们抓取到的信息
[<img height="=90" src="image/3.jpg" width="100"/>, <img height="=90" src="image/4.png" width="100"/>]
-----
[<p>Say sonmething</p>, <p>Say sonmething</p>]
-----
[<h3>The bath</h3>, <h3>The bath</h3>]
虽然,这里抓取到的东西还是会有网页的代码,所以我们要对内容进行筛选
在代码中加上判断结构即可得到我们所需要的内容
如有补充,我会在后续加上