不知道ex哪里写错了,输出都是空值
源代码:
import re
import requests
if name=='main':
url='https://ys.mihoyo.com/main/character/liyue?char=0%27
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
page_text=requests.get(url=url,headers=headers).text
ex='<li class="swiper-slide swiper-slide-thumb-active swiper-slide-visible swiper-slide-active">< img src="(.*?)" draggable.*?li>'
img_src_list=re.findall(ex,page_text,re.S)
print(img_src_list)
img 跟前面的尖括号空格去掉
首先,你想用正则去提取返回的内容,你得先看看你返回的内容是啥。
你请求的url返回的内容,并不是你在浏览器检查页面看见的这些数据,你在浏览器看见的,他是多个请求的返回值数据组装起来的。
返回值里面根本没有
写正则需要先打印处网页原码再做匹配,有时候网页中显示的和自己获取到的文本是不同的,打印出来后你可以将要提取的文本所在的某个节点复制出来进行匹配尝试,匹配成功了再加入到完整代码中,这样可以快速找出错误
还有就是我觉得正则可以写得更简单一些ex='img.src="(.?)"'
# 目测class里面那部分都不一致,而且img前面你还加了空格,试试这个
ex='<li class="swiper-slide.+?"><img src="(.*?)" draggable.*?li>'
img_src_list=re.findall(ex,page_text,re.S)
# !/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author: Roc-xb
"""
import requests
from bs4 import BeautifulSoup
if __name__ == '__main__':
url = "https://ys.mihoyo.com/main/character/liyue?char=0"
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
html = requests.get(url=url, headers=headers).text
soup = BeautifulSoup(html, 'html.parser')
imgList = soup.find_all('img')
for img in imgList:
print(img)