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

用漂亮的汤刮多页

酆光熙
2023-03-14

我已经获得了刮取第一页的代码,但是url从:

https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html --

import requests<br>
from bs4 import BeautifulSoup<br>
url = "https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html"<br>
page = requests.get(url)<br>
soup = BeautifulSoup(page.content, "html.parser")<br>
lists = soup.select("div#simulacion_tabla ul")<br>

for lis in lists:<br>
    title = lis.find('li', class_="col1").text<br>
    location = lis.find('li', class_="col2").text<br>
    province = lis.find('li', class_="col3").text<br>
    info = [title, location, province]<br>

如何创建从第2页到第65页的循环?非常感谢!

共有2个答案

胡越
2023-03-14

首先,请确保以正确的方式格式化代码,以便每个人都能阅读。在这里你可以找到更多。

这可能是一个潜在的解决方案。远不是优化代码,但您可以从中获得一些灵感。

import requests
from bs4 import BeautifulSoup

def scrape_page(url):
    """ Scrape the give url and return the bs4 ResultSet """
    page = requests.get(url)
    soup = BeautifulSoup(page.content, "html.parser")
    table = soup.select("div#simulacion_tabla ul")
    print(type(table))
    return table

def extract_rows(table):
    """ Extract rows """
    rows = []
    for row in table:
        title = row.find('li', class_="col1").text
        location = row.find('li', class_="col2").text
        province = row.find('li', class_="col3").text
        rows.append([title, location, province])
    return rows
        
big_table = []
index = scrape_page("https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html")
for row in extract_rows(index):
    big_table.append(row)

for x in range(2, 66):
    index = scrape_page("https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/" + str(x) + ".html")
    for row in extract_rows(index):
        big_table.append(row)

print(big_table)
柳宾实
2023-03-14

以下是工作解决方案:

import requests
from bs4 import BeautifulSoup
for page in range(1,65):
    url = "https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/{page}.html".format(page =page)
    #print(url)
    page = requests.get(url)
    soup = BeautifulSoup(page.content, "html.parser")
    lists = soup.select("div#simulacion_tabla ul")

    for lis in lists:
        title = lis.find('li', class_="col1").text
        location = lis.find('li', class_="col2").text
        province = lis.find('li', class_="col3").text
        info = [title, location, province]
        print(info)
 类似资料:
  • 我有一小段代码来从web站点中提取表数据,然后以csv格式显示。问题是for循环多次打印记录。我不确定是不是因为 标签。顺便说一句,我是Python新手。谢谢你的帮助!

  • 我试图刮此页上Flipkart: http://www.flipkart.com/moto-x-play/p/itmeajtqp9sfxgsk?pid=MOBEAJTQRH4CCRYM 我试图找到的div类"fk-ui-ccarousel超级容器相同的vreco部分reco-carousel-边界-顶部sameHorizontalReco",但它返回空结果。 divs是空的。我使用inspect元

  • 我有一个带有div标签的页面源,如下面的示例页面源。我想像下面的例子一样刮掉所有的网址,并将它们保存在列表中。 示例url: 来自: 我尝试使用下面的代码从href中刮取网址。我试图使用span类来过滤只包含作业卡search__easy飞机的div标签。代码不返回任何网址,只是一个空列表。我对美丽的汤和硒不熟悉。如果有人能指出我的问题是什么,并提出一个解决方案,我会很高兴。特别是如果你也能给出一

  • 我从谷歌应用商店抓取应用名称,每个网址作为输入,我只得到60个应用(因为如果用户不向下滚动,网站会呈现60个应用)。它是如何工作的,我如何才能从一个页面刮所有的应用程序使用美丽的汤和/或硒? 非常感谢。 这是我的密码:

  • 问题内容: 我正在尝试在Python 2.7中安装BeautifulSoup 。我不断收到错误消息,无法理解原因。 我按照说明安装了pip,该pip已安装到以下目录:,然后尝试将其添加到路径中并运行命令。 尝试了两种不同的方法: 都给我这个错误信息: 该外壳突出显示“安装”一词,并说这是无效的语法。 我不知道发生了什么,所以任何帮助将不胜感激。 问题答案: 是 命令行工具 ,而不是Python语法

  • 我试图使用beautiful soup刮一个html表,并将其导入熊猫--http://www.baseball-reference.com/teams/nym/2017.shtml--“Team Batting”表。 找表没问题: 现在我很难把所有的东西放在一个数据帧中。以下是我目前掌握的信息: 这一次只适用于一行。我的问题是如何同时对表中的每一行都这样做?