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

如何用漂亮的汤解析长网页?

步兴德
2023-03-14

我一直在使用下面的代码来解析链接中的网页https://www.blogforacure.com/members.php.代码将返回给定页面的所有成员的链接。

    from bs4 import BeautifulSoup
    import urllib
    r = urllib.urlopen('https://www.blogforacure.com/members.php').read()
    soup = BeautifulSoup(r,'lxml')
    headers = soup.find_all('h3')
    print(len(headers))
    for header in headers:
       a = header.find('a')
       print(a.attrs['href'])

但是我只得到上面页面的前10个链接。即使在打印美化选项时,我也只能看到前10个链接。

共有1个答案

许嘉珍
2023-03-14

通过向https://www.blogforacure.com/site/ajax/scrollergetentries.phpendpoint。

在你的代码中使用请求来模拟它们,维护一个web抓取会话:

from bs4 import BeautifulSoup
import requests

url = "https://www.blogforacure.com/site/ajax/scrollergetentries.php"
with requests.Session() as session:
    session.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}
    session.get("https://www.blogforacure.com/members.php")

    page = 0
    members = []
    while True:
        # get page
        response = session.post(url, data={
            "p": str(page),
            "id": "#scrollbox1"
        })
        html = response.json()['html']

        # parse html
        soup = BeautifulSoup(html, "html.parser")
        page_members = [member.get_text() for member in soup.select(".memberentry h3 a")]
        print(page, page_members)
        members.extend(page_members)

        page += 1

它将当前页码和每页的成员列表累加到成员列表中。不发布打印内容,因为它包含名称。

请注意,我故意让循环没完没了,请找出退出条件。可能是当response.json()抛出错误时。

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

  • 我使用beautifulsoup查找网页上的页数,但在编写代码时: 它给出了以下错误: 回溯(最近一次调用):文件“C:/Users/HangaarLab/Desktop/sonartik/sonartik.py”,第13行,在soup=BeautifulSoup(response.text)TypeError中:“模块”对象不可调用 在另一台计算机中,代码运行,但它给出了以下警告: UserWa

  • 我已经获得了刮取第一页的代码,但是url从: https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html -- 如何创建从第2页到第65页的循环?非常感谢!

  • 我有一小段代码来从web站点中提取表数据,然后以csv格式显示。问题是for循环多次打印记录。我不确定是不是因为 标签。顺便说一句,我是Python新手。谢谢你的帮助!

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

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