BeautifulSoup小练习-优美图


import requests
from bs4 import BeautifulSoup

url = "https://www.youmeitu.com/meinv/"
img_urls = []
headers = {
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
    }
resp = requests.get(url,headers=headers)
page = BeautifulSoup(resp.text,'html.parser')
result1 = page.find("div",attrs={"class":"TypeList"})
results2 = result1.find_all("img")
for result2 in results2:
    c = result2.get("src")
    img_urls.append(c)

# 开始请求照片并保存

for img_url in img_urls:
    na = img_url.split("/")[4]
    name = na.split("?")[0]
    img = requests.get(img_url)
    filename = f"图片文件夹\{name}"
    with open(filename,mode="wb") as f:
        f.write(img.content) 

遇到的问题

1.从BeautifulSoup里提取标签属性值要用get("属性")

2.文件命名时切片里面不能有"."否则会报错(OSError: [Errno 22] Invalid argument:)

3.写入图片mode要用"wb",否则报错(TypeError: write() argument must be str, not bytes)

from bs4 import BeautifulSoup
import requests
import re
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4750.0 Safari/537.36"}
resp = requests.get('https://movie.douban.com/top250',headers=headers)

soup = BeautifulSoup(resp,'lxml')
print(soup.prettify())#让解析字符串以标准的缩进格式进行输出
print(soup.title.string) #输出title节点的文本  
soup.p.atters#获取p节点的属性 
soup.p.atters['name']#获取name属性 = soup.p['name']
soup.p.contents #得到的是p节点下的所有直接子节点组成的列表
soup.find_all(text=re.compile('link'))#匹配节点文本,可以是字符串,可以是正则表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值