python - 如何从无限滚动网页中抓取正确数量的 URL?

标签 python web-scraping beautifulsoup infinite-scroll

我正在尝试从网页中抓取 URL。我正在使用这段代码:

from bs4 import BeautifulSoup

import urllib2 

url = urllib2.urlopen("http://www.barneys.com/barneys-new-york/men/clothing/shirts/dress/classic#sz=176&pageviewchange=true")

content = url.read()
soup = BeautifulSoup(content)

links=soup.find_all("a", {"class": "thumb-link"})

for link in links:

      print (link.get('href'))

但是我得到的输出只是 48 个链接,而不是 176 个。我做错了什么?

最佳答案

所以我所做的是使用 Postmans 拦截器功能来查看网站每次加载下一组 36 件衬衫时所做的调用。然后从那里复制代码中的调用。您无法一次性转储所有 176 个项目,因此我一次复制了网站上的 36 个项目。

from bs4 import BeautifulSoup
import requests

urls = []

for i in range(1, 5):
    offset = 36 * i
    r = requests.get('http://www.barneys.com/barneys-new-york/men/clothing/shirts/dress/classic?start=1&format=page-element&sz={}&_=1434647715868'.format(offset))
    soup = BeautifulSoup(r.text)

    links = soup.find_all("a", {"class": "thumb-link"})

    for link in links:
        if len(urls) < 176:
            print (link.get('href'))
            urls.append(link.get('href'))

关于python - 如何从无限滚动网页中抓取正确数量的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30921329/

相关文章:

python - 将一个列表的元素除以另一个列表的元素

python - Spark-submit 导入 SparkContext 失败

Python:避免嵌套 IF 语句的流程

python - 在 python 中使用 selenium 进行分页导航

python - 如何用python获取图像的完整链接?

Python Beautifulsoup 获取属性值

python - 使用for循环定义多个函数——Python

python - 脚本无法从网页获取数据

python - Scrapy - 选择除第一个之外的所有具有相同类别的表

python - 使用 BeautifulSoup 获取 li 中的文本