前言

鄙人仅为一名普普通通大二学生,才学浅出,来此各地高人聚集处书写浅见,还望各位前辈高人多多指点海涵。我们诚邀各地有志之士加入我们的代码学习群交流:871352155(无论你会C/C++还是Java,Python还是PHP......有兴趣我们都欢迎你的加入,不过还请各位认真填写加群信息。群内目前多为大学生,打广告的先生女士就请不要步足了。我们希望有远见卓识的前辈能为即将步入社会的初犊提出建议指引方向。)

在之前啊,我写过一片关于Pyecharts的文章,是关于数据可视化,有兴趣的朋友可以去看看https://blog.csdn.net/weixin_43341045/article/details/104137445,关于这个数据的来源啊,可以很多种,我这里就介绍下爬虫。爬虫也有很多种库,写过一篇关于Selenium的爬虫https://blog.csdn.net/weixin_43341045/article/details/104014416,我觉得吧这些库各有优缺点。比如上次的Selenium这玩意老厉害了可以模拟成人为的行动,很容易就骗到那个服务器。今天我来介绍下BeautifulSoup4,很美妙的汤哈,确实简单方便通俗易懂。

安装方法

打开cmd后,输入pip install BeautifulSoup。如果你是用pycharm,左上角的File找到setting,然后在Project:XXX里面有个Project Interpreter,你会看见右边有一堆是你已经安装好的库,然后点击更靠右的+写上BeautifulSoup点击install package

基本语法

 解析库

Python标准库  BeautifulSoup(html,’html.parser’)  Python内置标准库;执行速度快  容错能力较差  
lxml HTML解析库   BeautifulSoup(html,’lxml’) 速度快;容错能力强  需要安装,需要C语言库  
 lxml XML解析库   BeautifulSoup(html,[‘lxml’,’xml’]) 速度快;容错能力强;支持XML格式 需要C语言库  
 htm5lib解析库 BeautifulSoup(html,’htm5llib’)   以浏览器方式解析,最好的容错性 速度慢  

BeautifulSoup基本操作

BS4中文开发者文档地址https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

from bs4 import BeautifulSoup
BS = BeautifulSoup(html,"html.parser")
# 获取title标签的所有内容
print(BS.title) # 获取第一个tr标签的name,,class的值
print(BS.tr["name"])
print(BS.tr["class"])# 缩进格式
print(BS.prettify()) # 获取所有的figure标签,并遍历打印figure标签的文本值
for item in BS.find_all("figure"): print(item.get_text())# 获取title标签的名称
print(BS.title.name) # 获取第一个td标签中的所有内容
print(BS.td) # 用.string获取标签内部的文字
print(BS.title.string) # 取一个标签下标签的所有内容,比如body
print(BS.body) # 取第一个img标签中的所有内容
print(BS.img) # 取所有的a标签中的所有内容
print(BS.find_all("a"))# 取特定标签id="u1"
print(BS.find(id="u1")) # 获取所有的div标签,并遍历打印div标签中的src的值
for item in BS.find_all("div"): print(item.get("src")) 

实例

    关于B站的专栏里面有很多精美的壁纸,一个一个下载,太麻烦了,用爬虫他不香吗???这里用极其简单的代码来实现这个功能。

这个本来可以更精简化代码,但是B站这个很牛排!,我爬取下来后,代码是有残缺的,我估计是一种反扒措施

比如你看这个用F12查看浏览器元素你可以找到那个class和data-index等内容,而现在缺了不少导致定位什么的都有小问题(其实际就是我太菜了不会更高明的办法ToT),所以我先找到比较靠外的figure标签,然后定位下面的标签。

下面是极简化的9行代码。

import requests,urllib,re,os#该有的库都应该有哈
from bs4 import BeautifulSoup#重头戏当然要独占一排
imgurl,i=[],0#一个列表用来装爬取下来的地址,另外一个要给爬下来的图片写个名字
for picture in (BeautifulSoup((requests.get('https://www.bilibili.com/read/cv4566895?from=search')).text,'html.parser').find_all('figure',class_='img-box')):for img in picture:#爬取下来后我们要取img标签下的data-src并保存到列表if (img.get('data-src')!=None):imgurl.append(img.get('data-src'))
for downPic in (imgurl[1:-1]):#用列表切片取消第一个和最后一个图片。因为爬下来的图片第一个是“小电视”最后一个是“分享”不属于我们想要的i+=1urllib.request.urlretrieve('https:'+'%s'%downPic,filename=('%s.png'%(i)))#这里下载要注意,爬取后的图片前面没有https,我们要亲自加上

我怎么可能会轻易告诉你我的HTML系列作品上面的图片都是这样得来的呢?

同样的功能我们为了保险起见,加一个“大轮盘”user_agent_list,防止被检测到然后把我们丢出门外,同时也是为了具体介绍下功能

import requests,urllib
import random   #为了后面这个伪装地址随机化
import re
import os
from bs4 import BeautifulSoup
#这个user_agent_list 网上都能查到哈,用来伪装自己的
user_agent_list = [\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"\"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",\"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",\"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",\"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19                                                      *                                   .0.1061.1 Safari/536.3",\"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",\"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"]def download_html(url):#该函数就是为了防止被监测,每次爬取前都换一次地址req = requests.get(url,headers ={'User-Agent':random.choice(user_agent_list)})req.encoding = 'utf-8'if req.status_code != 200:#爬取不到我们就走呗raise  Exception('error')htmls = req.textreturn htmls#返回值
imgurl,i=[],0
#find_all上面介绍过,用来找所有的figure标签,后面的意思就是找到class等于img-box的figure
for picture in (BeautifulSoup(download_html('https://www.bilibili.com/read/cv4566895?from=search'),'html.parser').find_all('figure',class_='img-box')):for img in picture:if (img.get('data-src')!=None):imgurl.append(img.get('data-src'))
for downPic in (imgurl[1:-1]):#一定要切片哈,不切片,你就会得到“小电视”和那个“分享”图片i+=1#方便取名字,其实你也可以照这个代码,把图片名字也爬取下来urllib.request.urlretrieve('https:'+'%s'%downPic,filename=('%s.png'%i))

9行代码爬取B站专栏图片(BeautifulSoup4)相关推荐

  1. python 爬取图片环绕_用python几行代码爬取秀美图上图片(福利)

    废话少说上代码 当然还有多线程爬虫python学习文件以及demo 请移步gitee:https://gitee.com/xuanyuan9528/yande_pider.git 其中需要先添加包,详 ...

  2. python59行代码爬取免费ppt模板

    Python59行代码爬取某站中秋节ppt模板 网址:https://www.1ppt.com/moban/zhongqiujie/ 用到的库:requests.re.os.lxml 请求方式:GET ...

  3. python爬上市公司信息_实战项目 1:5 行代码爬取国内所有上市公司信息

    实战项目 1:5 行代码爬取国内所有上市公司信息 Python入门爬虫与数据分析 在正式开始这门专栏课的学习之前,我们先来看一个简单的爬虫案例.兴趣是最好的老师,当你对爬虫产生兴趣的时候,才会更有动力 ...

  4. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  5. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  6. 简单20行代码爬取王者荣耀官网1080p壁纸

    简单20行代码爬取王者荣耀官网1080p壁纸 # -*- coding: utf-8 -*- # @Time : 2020/12/13 18:08 # @Author : ningfangcong i ...

  7. Python25行代码爬取豆瓣排行榜数据

    Python25行代码爬取豆瓣排行榜数据 只需要用到requests, re ,csv 三个库即可. code import re import requests import csv url = ' ...

  8. python:利用20行代码爬取网络小说

    文章目录 前言 一.爬虫是什么? 二.实现过程 总结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 今天,来给大家一个分享一下如何使用20爬虫行代码爬取网络小说(这里我们以龙 ...

  9. 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!!

    教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: sel ...

最新文章

  1. Linux基础维护——笔记
  2. Linker Scripts3--简单的链接脚本命令2-Assigning Values to Symbols
  3. php中解析数组,在PHP中解析多维数组
  4. require.ensure与require AMD的区别
  5. 2019春季学期进度报告(十四)
  6. vim安装时报错:Depends:vim-common (=2:7.4.1689-3ubuntu1.4) but 2:8.0.1453-1ubuntu1.1 is to be installed
  7. hydra-字典暴力破解
  8. 什么是php探针,以及雅黑探针使用教程
  9. [办公自动化]目录修改以及插入分页符后行间距自动变宽
  10. 七夕将至,在线感受程序员男友的浪漫,不要再叫我们直男了好吗!!!
  11. 曾经学舞度芳年(代序)
  12. 谋哥:App开发者的苦逼不值得怜悯!
  13. #Reading Paper#STAM:A Spatiotemporal Aggregation Method for Graph Neural Network-based Recommendatio
  14. Tensorflow训练模型越来越慢
  15. paypal tp 对接_PayPal 对接
  16. 2、并行接口、协议和相关芯片介绍(8080、8060)
  17. 【庖丁解牛】xshell链接服务器 /usr/bin/xauth: file /root/.Xauthority does not exist
  18. pythonlicense问题_解决Pynlpir分词License过期问题
  19. open-ethereum-pool以太坊矿池源码分析(1)环境安装
  20. [iOS开发]iOS中的相关锁

热门文章

  1. 动漫的开始,我编程的登陆
  2. 专业mysql client配置
  3. win10系统lol重新连接到服务器,win10系统运行lol提示“无法连接服务器”的解决方法...
  4. 中文字母数字下划线_正则表达式校验
  5. 【机器人学】使用代数法求解3自由度拟人机械臂的逆运动学解
  6. html添加分享按钮,分享按钮-jQuery之家-自由分享jQuery、html5、css3的插件库
  7. python采集shipin及评论数据并作自动点赞操作~
  8. 主流CPP开发环境工具(上)-尹成-专题视频课程
  9. 超哥带你玩转正则表达式-(六)
  10. iOS 电子白板 实现