python3爬虫-使用正则取值

1、python版本:python3.0

2、需要模块,requests/BeautifulSoup/os/re

3、代码如下,网址改成xxx了,大家自己找些网址爬吧。

4、模块介绍:

requests

属性或方法
print(response.status_code) # 获取响应状态码
print(response.headers) # 获取响应头
print(response.content) # 获取响应内容
json() 返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误)
headers 返回响应头,字典格式
text 返回响应的内容,unicode 类型数据
url 返回响应的 URL
request 返回请求此响应的请求对象
requests 方法
delete(url, args) 发送 DELETE 请求到指定 url
get(url, params, args) 发送 GET 请求到指定 url
head(url, args) 发送 HEAD 请求到指定 url
patch(url, data, args) 发送 PATCH 请求到指定 url
post(url, data, json, args) 发送 POST 请求到指定 url
put(url, data, args) 发送 PUT 请求到指定 url
request(method, url, args) 向指定的 url 发送指定的请求方法



os和re就去这里看吧:https://www.runoob.com/python3/python3-reg-expressions.html
Python爬虫编程:数据解析模块之bs4:https://blog.csdn.net/lu_jianjun/article/details/133359342

爬虫代码:


import requests
from bs4 import BeautifulSoup
import os
import re

#目标网址,大家找一下xxx吧
url = 'https://xxx/herolist.shtml'

#发送http请求
respose = requests.get(url)
#检查是否请求成功
if respose.status_code == 200:
    #成功后解析,设置编码,同head里面meta里的charset设置
    respose.encoding = 'gbk' 
    soup = BeautifulSoup(respose.text, 'html.parser')
    #寻找需要的元素,<img></img>
    roles = soup.find_all(name='img')

    #创建文件夹用于保存图片
    if not os.path.exists('roles_images'):
        os.mkdir('roles_images')
    #遍历每个角色
    for role in roles:
        #提取角色名称,如果有报错可以先赋值,if条件判断后,再使用group(1)取值
        name = re.search(r'alt="(.*?)"',str(role)).group(1)
        #提取图片
        print(name)
#提取url,如果有报错可以先赋值,if条件判断后,再使用group(1)取值
        image_url = re.search(r'src="//(.*?)"',str(role)).group(1)
        #拼接url字符串下载图片
        image_url_zx = "http://"+image_url
        image_response= requests.get(image_url_zx)
        if image_response.status_code == 200:
            with open(os.path.join('roles_images',name + '.jpg'),'wb') as f:
                f.write(image_response.content)
            print(f'{name}的图片已保存。')
        else:
            print(f'无法下载{name}的图片')
else:
    print('打开网页失败。')
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注