当前位置: 首页 > 知识库问答 >
问题:

从页面检索所有信息

林俭
2023-03-14

我试图在一个旧的海军网页上抓取产品的URL。然而,它只是给出了产品列表的一部分,而不是全部(例如,当超过8个URL时,只给出8个URL)。我希望有人能帮我找出问题所在。

from bs4 import BeautifulSoup
from selenium import webdriver
import html5lib
import platform
import urllib
import urllib2
import json


link = http://oldnavy.gap.com/browse/category.do?cid=1035712&sop=true
base_url = "http://www.oldnavy.com"

driver = webdriver.PhantomJS()
driver.get(link)
html = driver.page_source
soup = BeautifulSoup(html, "html5lib")
bigDiv = soup.findAll("div", class_="sp_sm spacing_small")
for div in bigDiv:
  links = div.findAll("a")
  for i in links:
    j = j + 1
    productUrl = base_url + i["href"]
    print productUrl

共有1个答案

白侯林
2023-03-14

此页面使用JavaScript加载元素,但它仅在向下滚动页面时加载。

它被称为“延迟加载”

你也必须滚动页面。

from selenium import webdriver
from bs4 import BeautifulSoup
import time

link = "http://oldnavy.gap.com/browse/category.do?cid=1035712&sop=true"
base_url = "http://www.oldnavy.com"

driver = webdriver.PhantomJS()
driver.get(link)

# ---

# scrolling

lastHeight = driver.execute_script("return document.body.scrollHeight")
#print(lastHeight)

pause = 0.5
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(pause)
    newHeight = driver.execute_script("return document.body.scrollHeight")
    if newHeight == lastHeight:
        break
    lastHeight = newHeight
    #print(lastHeight)

# ---

html = driver.page_source
soup = BeautifulSoup(html, "html5lib")

#driver.find_element_by_class_name

divs = soup.find_all("div", class_="sp_sm spacing_small")
for div in divs:
    links = div.find_all("a")
    for link in links:
    print base_url + link["href"]

理念:https://stackoverflow.com/a/28928684/1832058

 类似资料:
  • 问题内容: 我有以下代码,用于使用JSoup在Java中解析HTML。 问题是我只能检索首页搜索结果链接。我应该怎么做才能从Google搜索结果的其余页面获得链接。 问题答案: 如果要从第二页获得结果,请添加到URL。对于第三页使用,依此类推。

  • Q2 是否有任何其他健壮的方法,或者如果我可以使用页脚链接和我已经完成的方法来结束,如果一个页面肯定是一个联系我们的页面?

  • 我正在尝试使用Microsoft Graph API从AD检索所有用户。 https://graph.microsoft.com/v1.0/users 但是这只是从整个用户列表中返回一些前n行。 我猜它在那里使用了一些分页。但没有找到如何在查询中指定页码或这些详细信息作为参数。 https://learn.microsoft.com/en-us/graph/api/user-list?视图=图形-

  • 我们应该如何从kafka集群/动物园管理员处检索所有代理(已连接/已断开连接)的完整详细信息? 我发现以下方法只获取活动代理,但我想知道以前在集群中服务的代理的IP地址,但它现在已断开连接 以下代码片段给出了活动代理的列表: 输出: 我的机器-1:端口 我的机器-2:端口 我的机器-3:端口 我的机器-4:端口 我需要多节点 kafka 集群中所有已连接/已断开连接的代理的信息

  • 我正在尝试使用查询检索dynamodb表中的所有项。下面是我的代码: 但是,我收到以下错误: 我的代码非常简单,出自boto dynamodb2文档,因此我不确定为什么会出现上述错误。任何见解都将受到赞赏(这是新的,有点迷失)。谢谢 编辑:我有一个散列键和一个范围键。我能够通过特定的哈希键进行查询。例如 但我如何检索所有项目?

  • 我的代码不会获取这样的链接。使用doc.select也没有帮助。我的问题是,如何从页面中获得所有链接? 编辑:我想我知道问题出在哪里了。我遇到麻烦的页面写得很糟糕,HTML验证器抛出了大量的错误。这会引起问题吗?