主页 分类 关于

爬虫 Beautiful Soup(牢饭吃到饱)

  1. Beautiful Soup4 安装bs4打开cmd 输入以下内容 pip install lxml find用法find("标签", 属性:id class) find("p", id="sdq") find_all用法find("标签", 属性:id class).find_all("标签")find("p", id="sdq").find_all("a") 综合练习打开这个网址 # 导入requests和bs4库import requestsfrom bs4 import BeautifulSoupimport timeurl = "https://www.umei.cc/bizhitupian/weimeibizhi/"resp = requests.get(url)resp.encoding = 'utf-8' # 处理乱码# print(resp.text)# 把源代码交给bsmain_page = BeautifulSoup(resp.text, "html.parser")alist = main_page.find("div", class_="TypeList").find_all("a")# print(alist)for a in alist: href = a.get('href') # 直接通过get就可以拿到属性的值 # 子页面的源代码 child_resp = requests.get(href) child_resp.encoding = 'utf-8' child_text = child_resp.text # 从子页面中拿到图片的下载路径 child = BeautifulSoup(child_text, "html.parser") p = child.find("p", align="center") img = p.find("img") src = img.get("src") # 下载图片 img_resp = requests.get(src) # img_resp.content # 这里拿到的是字节 img_name = src.split("/")[-1] # 拿到url中的最后一个 / 以后的内容-1代表最后一个 with open("img/"+img_name, mode="wb") as f: f.write(img_resp.content) # 图片内容写入文件 print("正在下载", img_name) time.sleep(1) #停1秒print("下载完了") lxml模块的使用导入lxml的etree库from lxml import etree 利用etree.HTML 将HTML字符串(bytes类型活str类型) 转化为Element对象 Element对象具有xpath的方法 返回结果列表 html = etree.HTML(text) # text为文本内容ret_list = html.xpath("xpath语法规则字符串") # 用xpath来解析 导入lxml的etree.tostring函数的使用from lxml import etreehtml_str = ''' <div><ul> <li class="itrm-1"><a href=";link1.html">first item</a></li> <li class="itrm-1"><a href=";link2.html">second item</a></li> <li class="itrm-inactive"><a href=";link3.html">third item</a></li> <li class="itrm-1"><a href=";link1.html">fourth item</a></li> <li class="itrm-0"><a href=";link5.html">fifth item</a></li> <ul><div> ''' # 将html源码转换成element对象 etree.HTML()能够自动补全html缺失的标签html = etree.HTML(html_str)# 转换成String类型的数据 handeled_html_str = etree.toString(html).decode()print(handeled_html_str)
  2. 安装bs4打开cmd 输入以下内容 pip install lxml find用法find("标签", 属性:id class) find("p", id="sdq") find_all用法find("标签", 属性:id class).find_all("标签")find("p", id="sdq").find_all("a") 综合练习打开这个网址 # 导入requests和bs4库import requestsfrom bs4 import BeautifulSoupimport timeurl = "https://www.umei.cc/bizhitupian/weimeibizhi/"resp = requests.get(url)resp.encoding = 'utf-8' # 处理乱码# print(resp.text)# 把源代码交给bsmain_page = BeautifulSoup(resp.text, "html.parser")alist = main_page.find("div", class_="TypeList").find_all("a")# print(alist)for a in alist: href = a.get('href') # 直接通过get就可以拿到属性的值 # 子页面的源代码 child_resp = requests.get(href) child_resp.encoding = 'utf-8' child_text = child_resp.text # 从子页面中拿到图片的下载路径 child = BeautifulSoup(child_text, "html.parser") p = child.find("p", align="center") img = p.find("img") src = img.get("src") # 下载图片 img_resp = requests.get(src) # img_resp.content # 这里拿到的是字节 img_name = src.split("/")[-1] # 拿到url中的最后一个 / 以后的内容-1代表最后一个 with open("img/"+img_name, mode="wb") as f: f.write(img_resp.content) # 图片内容写入文件 print("正在下载", img_name) time.sleep(1) #停1秒print("下载完了") lxml模块的使用导入lxml的etree库from lxml import etree 利用etree.HTML 将HTML字符串(bytes类型活str类型) 转化为Element对象 Element对象具有xpath的方法 返回结果列表 html = etree.HTML(text) # text为文本内容ret_list = html.xpath("xpath语法规则字符串") # 用xpath来解析 导入lxml的etree.tostring函数的使用from lxml import etreehtml_str = ''' <div><ul> <li class="itrm-1"><a href=";link1.html">first item</a></li> <li class="itrm-1"><a href=";link2.html">second item</a></li> <li class="itrm-inactive"><a href=";link3.html">third item</a></li> <li class="itrm-1"><a href=";link1.html">fourth item</a></li> <li class="itrm-0"><a href=";link5.html">fifth item</a></li> <ul><div> ''' # 将html源码转换成element对象 etree.HTML()能够自动补全html缺失的标签html = etree.HTML(html_str)# 转换成String类型的数据 handeled_html_str = etree.toString(html).decode()print(handeled_html_str)
  3. 安装bs4
  4. find用法
  5. find_all用法
  6. 综合练习
  7. lxml模块的使用
    1. 导入lxml的etree库
    2. 导入lxml的etree.tostring函数的使用

每天一个入狱小技巧

Beautiful Soup4

安装bs4

打开cmd 输入以下内容

pip install lxml

find用法

find("标签", 属性:id class) 
find("p", id="sdq")

find_all用法

find("标签", 属性:id class).find_all("标签")
find("p", id="sdq").find_all("a")

综合练习

打开这个网址

# 导入requests和bs4库
import requests
from bs4 import BeautifulSoup
import time

url = "https://www.umei.cc/bizhitupian/weimeibizhi/"
resp = requests.get(url)
resp.encoding = 'utf-8' # 处理乱码

# print(resp.text)
# 把源代码交给bs
main_page = BeautifulSoup(resp.text, "html.parser")
alist = main_page.find("div", class_="TypeList").find_all("a")
# print(alist)
for a in alist:
href = a.get('href') # 直接通过get就可以拿到属性的值
# 子页面的源代码
child_resp = requests.get(href)
child_resp.encoding = 'utf-8'
child_text = child_resp.text
# 从子页面中拿到图片的下载路径
child = BeautifulSoup(child_text, "html.parser")
p = child.find("p", align="center")
img = p.find("img")
src = img.get("src")
# 下载图片
img_resp = requests.get(src)
# img_resp.content # 这里拿到的是字节
img_name = src.split("/")[-1] # 拿到url中的最后一个 / 以后的内容-1代表最后一个
with open("img/"+img_name, mode="wb") as f:
f.write(img_resp.content) # 图片内容写入文件

print("正在下载", img_name)
time.sleep(1) #停1秒


print("下载完了")

lxml模块的使用

导入lxml的etree库

from lxml import etree

利用etree.HTML 将HTML字符串(bytes类型活str类型) 转化为Element对象 Element对象具有xpath的方法 返回结果列表

html = etree.HTML(text)     # text为文本内容
ret_list = html.xpath("xpath语法规则字符串") # 用xpath来解析

导入lxml的etree.tostring函数的使用

from lxml import etree

html_str = ''' <div><ul>
<li class="itrm-1"><a href=";link1.html">first item</a></li>
<li class="itrm-1"><a href=";link2.html">second item</a></li>
<li class="itrm-inactive"><a href=";link3.html">third item</a></li>
<li class="itrm-1"><a href=";link1.html">fourth item</a></li>
<li class="itrm-0"><a href=";link5.html">fifth item</a></li>
<ul><div> '''
# 将html源码转换成element对象 etree.HTML()能够自动补全html缺失的标签
html = etree.HTML(html_str)
# 转换成String类型的数据
handeled_html_str = etree.toString(html).decode()
print(handeled_html_str)









作者: 我叫史迪奇
本文来自于: https://sdq3.link/reptile-bs4-lxml.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议