我在尝试从各个页面废弃一些数据时遇到问题。我尝试过谷歌的一些解决方案,但根本没有工作。
我的观点是网页废料,只是这个网站上显卡的名称:" https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page=2&PageSize=12&order=BESTMATCH"
首先,我尝试构建一个仅适用于其中一个页面的代码。这非常有效。
i = 1
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&bop=And&Depa=1&Category=38&Page={}&PageSize=12&order=BESTMATCH".format(i)
while i <= 3:
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
# esse é o que vou usar para fazer o loop
containers = page_soup.findAll("div",{"class":"item-container"})
container = containers[0]
for container in containers:
title_container = container.findAll("a",{"class":"item-title"})
product_name = title_container[0].text
print("product_name: " + product_name)
i = i+1
#
有了这个,我在第2页获得了图形卡的名称。如果我在HTML处将其切换为1,我也可以获得第一个的名称。
#我试图制作一个循环来处理它,但似乎只是一遍又一遍地返回第一页。
<link rel="stylesheet" type="text/css" href="/css/mystyle.css">
有人可以帮我吗? = D
PS:人们可以随意更改我的代码并提出更好的解决方案。 PS 2:Jupyter Lab的Python 3.5。
答案 0 :(得分:0)
您需要以这样的方式创建一个循环,以便您在刮刀中提供的链接完美无瑕。您可以通过多种方式实现相同的目标。这是其中之一。只需执行脚本,您将获得遍历三页的所有产品名称。
import requests
from bs4 import BeautifulSoup
for page in range(1,4):
my_url = "https://www.newegg.com/Product/ProductList.aspx?Submit=StoreIM&IsNodeId=1&page={}&bop=And&Depa=1&Category=38&PageSize=12&order=BESTMATCH".format(page)
res = requests.get(my_url).text
soup = BeautifulSoup(res, "lxml")
for container in soup.select(".item-title"):
print("product_name: {}".format(container.text))