从带有列表的网站获取名称并不总是有效
Posted
技术标签:
【中文标题】从带有列表的网站获取名称并不总是有效【英文标题】:Getting names from a website with a list doesn't always work 【发布时间】:2021-02-15 01:59:01 【问题描述】:我有以下代码:
Linksml=["https://articulo.mercadolibre.cl/MLC-554702642-samsung-note-9-dual-sim-128gb-carcasas-y-caja-_JM",
"https://articulo.mercadolibre.cl/MLC-554718846-audifonos-hyperx-cloud-ps4-_JM",
"https://articulo.mercadolibre.cl/MLC-554753668-disco-duro-ssd-_JM",
"https://articulo.mercadolibre.cl/MLC-554695355-celuar-samsung-j6-duos-_JM"]
for x in range(len(Linksml)):
page=requests.get(Linksml[x])
soup=BeautifulSoup(page.content,'html.parser')
tags=soup.find('h1', class_='item-title__primary ')
print(tags)
它可以工作,但如果我运行 10 次,它会在 5 次显示产品 1 和 2 的名称,而在剩下的 5 次中,它会显示“无”。 3个产品是随机的,一次执行产品1可以显示名称,两次之后可以显示“无”。 3个产品都是这样,我不知道该怎么办了。请帮助我,奥林匹斯诸神。
【问题讨论】:
您是否尝试过打印 get-requests 中的响应以检查是否确实存在任何具有 item-title__primary 类的项目? 【参考方案1】:其实第一个链接和其他的不一样,所以我把它从list
中去掉了。此代码适用于其他链接。试试这个:
from bs4 import BeautifulSoup
from selenium import webdriver
import time
Linksml=["https://articulo.mercadolibre.cl/MLC-554718846-audifonos-hyperx-cloud-ps4-_JM",
"https://articulo.mercadolibre.cl/MLC-554753668-disco-duro-ssd-_JM",
"https://articulo.mercadolibre.cl/MLC-554695355-celuar-samsung-j6-duos-_JM"]
driver = webdriver.Chrome()
for x in range(len(Linksml)):
driver.get(Linksml[x])
time.sleep(3)
soup=BeautifulSoup(driver.page_source,'html.parser')
tags=soup.find('h1', class_= 'item-title__primary')
if tags: print(tags.text.strip())
driver.close()
输出:
Audifonos Hyperx Cloud Ps4
Disco Duro Ssd
Celuar Samsung J6+ Duos
【讨论】:
以上是关于从带有列表的网站获取名称并不总是有效的主要内容,如果未能解决你的问题,请参考以下文章