网页抓页下页

时间:2017-10-22 21:11:15

标签: web web-scraping beautifulsoup python-requests

我在尝试从各个页面废弃一些数据时遇到问题。我尝试过谷歌的一些解决方案,但根本没有工作。

我的观点是网页废料,只是这个网站上显卡的名称:" 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。

1 个答案:

答案 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))