python用BeautifulSoup库简单爬虫实例分析
作者:segmentfault 时间:2022-04-02 21:42:00
会用到的功能的简单介绍
1、from bs4 import BeautifulSoup
#导入库
2、请求头herders
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36','referer':"www.mmjpg.com" }
all_url = 'http://www.mmjpg.com/'
'User-Agent':请求方式
'referer':从哪个链接跳转进来的
3、建立连接
start_html = requests.get(all_url, headers=headers)
all_url:起始的地址,也就是访问的第一个页面
headers:请求头,告诉服务器是谁来了。
requests.get:一个方法能获取all_url的页面内容并且返回内容。
4、解析获取的页面
Soup = BeautifulSoup(start_html.text, 'lxml')
BeautifulSoup:解析页面
lxml:解析器
start_html.text:页面的内容
5、处理获取的页面
all_a = Soup.find('div', class_='pic').find_all('a')[-2]
Soup.find()查找某一个
find_all()查找所有的,返回一个列表
.find('img')['src'] :获取img的src链接属性
class__:获取目标的类名
div/a:类型条件为div/a的
[-2]可以用来去掉最后多匹配的标签,这里表示去掉最后两个a标签
6、获取目标内容
<a href =# >内容</a>
a[i]/get_text():获取第i个a标签里面的内容
7、可能用到的其他功能介绍:
1、文件夹创建与切换
os.makedirs(os.path.join("E:\name", filename))
#在目录E:\name下创建名为filename的文件夹
os.chdir("E:\name\\" + filename)
#切换工作路径到E:\name\filename下
2、文件保存
f = open(name+'.jpg', 'ab')##写入多媒体文件必须要 b 这个参数!
f.write(img.content) ##多媒体文件要是用conctent!
f.close()
案例:爬取妹纸图
import requests
from bs4 import BeautifulSoup
import os
#导入所需要的模块
class mzitu():
def all_url(self, url):
html = self.request(url)##
all_a = BeautifulSoup(html.text, 'lxml').find('div', class_='all').find_all('a')
for a in all_a:
title = a.get_text()
print('------开始保存:', title)
path = str(title).replace("?", '_') ##替换掉带有的?
self.mkdir(path) ##调用mkdir函数创建文件夹!这儿path代表的是标题title
href = a['href']
self.html(href)
def html(self, href): ##获得图片的页面地址
html = self.request(href)
max_span = BeautifulSoup(html.text, 'lxml').find('div', class_='pagenavi').find_all('span')[-2].get_text()
#这个上面有提到
for page in range(1, int(max_span) + 1):
page_url = href + '/' + str(page)
self.img(page_url) ##调用img函数
def img(self, page_url): ##处理图片页面地址获得图片的实际地址
img_html = self.request(page_url)
img_url = BeautifulSoup(img_html.text, 'lxml').find('div', class_='main-image').find('img')['src']
self.save(img_url)
def save(self, img_url): ##保存图片
name = img_url[-9:-4]
img = self.request(img_url)
f = open(name + '.jpg', 'ab')
f.write(img.content)
f.close()
def mkdir(self, path): ##创建文件夹
path = path.strip()
isExists = os.path.exists(os.path.join("E:\mzitu2", path))
if not isExists:
print('建了一个名字叫做', path, '的文件夹!')
os.makedirs(os.path.join("E:\mzitu2", path))
os.chdir(os.path.join("E:\mzitu2", path)) ##切换到目录
return True
else:
print( path, '文件夹已经存在了!')
return False
def request(self, url): ##这个函数获取网页的response 然后返回
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
'referer':#伪造一个访问来源 "http://www.mzitu.com/100260/2"
}
content = requests.get(url, headers=headers)
return content
#设置启动函数
def main():
Mzitu = mzitu() ##实例化
Mzitu.all_url('http://www.mzitu.com/all') ##给函数all_url传入参数
main()
来源:https://segmentfault.com/a/1190000011192866
标签:python,爬虫实例
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
asp如何实现点击数的计算?
2010-05-18 18:39:00
ASP 高亮显示不区分大小写的关键字
2011-03-09 10:45:00
关于Youtube URL的十个技巧
2009-04-21 13:19:00
![](https://img.aspxhome.com/file/UploadPic/20094/21/youtubeoffice01cn1-34s.jpg)
ASP.NET中的几种弹出框提示基本实现方法
2023-07-13 00:23:50
Javascript 中对中文长度对行判断
2009-07-05 18:39:00
Python实现构建一个仪表板的示例代码
2023-10-03 11:53:27
![](https://img.aspxhome.com/file/2023/8/62258_0s.gif)
运行asp.net时出现 http错误404-文件或目录未找到
2023-07-24 01:53:36
使用python实现excel的Vlookup功能
2023-05-01 20:15:15
![](https://img.aspxhome.com/file/2023/1/65511_0s.png)
网页的栅格设计思考
2007-11-09 10:33:00
![](https://img.aspxhome.com/file/UploadPic/200711/9/2007119103627835s.png)
实例讲解在MySQL中如何导出整个数据库
2009-09-01 10:03:00
PHP入门速成(3)
2023-11-20 18:48:03
HTML和CSS中的视觉语义
2010-07-09 13:08:00
![](https://img.aspxhome.com/file/UploadPic/20107/9/01-27s.jpg)
可以随便改别人的网页的代码
2008-03-25 12:54:00
删除数组中重复项(uniq)
2009-12-28 12:23:00
asp如何用JMail同时给多人发信?
2010-06-12 12:52:00
使用MySql和php出现中文乱码的解决方法
2009-01-14 12:02:00
php相当简单的分页类
2023-11-17 01:50:36
asp检测文件编码方法
2007-10-03 14:27:00
巧用CSS滤镜做图案文字
2011-04-29 14:06:00
![](https://img.aspxhome.com/file/UploadPic/20072/2007231136186s.gif)
PHP PDOStatement::execute讲解
2023-06-08 14:05:19