以下是网页
web='''
"herolist clearfix">- " " target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/194/194.jpg" windth='91px' alt="苏烈">苏烈</a ></li>
- "herodetail/195.shtml" target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/195/195.jpg" windth='91px' alt="百里玄策">百里玄策</a ></li>
- "herodetail/196.shtml" target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/196/196.jpg" windth='91px' alt="百里守约">百里守约</a ></li>
"herodetail/193.shtml" target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/193/193.jpg" windth='91px' alt="铠">铠</a ></li>
a=web.find("
b=web.find("windth=") #找出web中windth=的位置
sulie=web[a+10:b-2]
print(sulie)
为什么网页信息中有四个img和windth,却只会输出第一个的网址内容呀!?
我要怎么修改代码获取其他的几个网址呢?
ChatGPT尝试为您解答,仅供参考
您的代码是将web中的所有内容查找"<img"的位置,然后再找"windth="的位置,再将这两个位置之间的字符串赋值给变量sulie并输出。如果想要获取所有的图片网址,您可以使用正则表达式或者HTML解析库(例如Beautiful Soup)来解析HTML代码,然后遍历所有的img标签,并获取它们的src属性值。
下面是使用Beautiful Soup来解析HTML代码并获取所有图片网址的示例代码:
from bs4 import BeautifulSoup
# 将HTML代码解析为Beautiful Soup对象
soup = BeautifulSoup(web, 'html.parser')
# 遍历所有的img标签
for img in soup.find_all('img'):
# 获取img标签的src属性值
img_src = img['src']
print(img_src)
第一个问题:如何使用原来的代码获取其他的网址?
你可以在遍历所有的img标签时,使用相同的方法获取每个img标签的父元素的href属性值,例如:
for img in soup.find_all('img'):
# 获取img标签的src属性值
img_src = img['src']
# 获取img标签的父元素的href属性值
href = img.parent['href']
print(img_src, href)
第二个问题:为什么寻找了所有的,赋值只有一个?
这是因为在第一个代码段中,你只是获取了第一个img标签的位置,然后截取了字符串中的一小段。
第三个问题:切片中的数字是怎么看的?
在字符串的切片中,第一个数字表示开始位置,第二个数字表示结束位置。例如:
string = "Hello World!"
substring = string[3:8]
print(substring) # 输出 "lo Wo"
在上面的代码中,字符串string的切片[3:8]表示从第3个字符开始,截取到第8个字符之前,也就是截取"lo Wo"。
分割了字符段和加了个循环,
另外你的目的应该是要取url,开始位置应该要再加个1,不然会多个引号,所以是a+11
web='''<ul class="herolist clearfix">
<a href=" " target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/194/194.jpg" windth='91px' alt="苏烈">苏烈</a ></li>
<a href="herodetail/195.shtml" target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/195/195.jpg" windth='91px' alt="百里玄策">百里玄策</a ></li>
<a href="herodetail/196.shtml" target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/196/196.jpg" windth='91px' alt="百里守约">百里守约</a ></li>
<a href="herodetail/193.shtml" target="_blank">< img src="http://game.gtimg.cn/images/yxzj/img201606/heroimg/193/193.jpg" windth='91px' alt="铠">铠</a ></li>
'''
str_list=web.split('<a')
for i in str_list:
a = i.find("< img") # 找出web中<img的位置
#找不到会返回-1,排除掉这种情况
if a!= -1:
b = i.find("windth=") # 找出web中windth=的位置
sulie = i[a + 11:b - 2]
print(sulie)