从网页获取所有链接

时间:2019-11-05 19:58:50

标签: python python-3.x beautifulsoup

我正在尝试从此website

中获取所有链接

我的代码是:

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

url_meva = https://www.recetasgratis.net'

uClient = uReq(url_meva)
pag_html = uClient.read()
uClient.close()

pag_soup = soup(pag_html, "html.parser")

containers = pag_soup.findAll("a",{"class":"titulo titulo--bloque"})

如果我输入len(containers),则结果为43,大约必须为25000。

为什么我只能得到那43个而不是其余的?

想法是获取食谱的链接。 我知道该网站的食谱结构相同。

谢谢

2 个答案:

答案 0 :(得分:0)

阅读URL https://www.recetasgratis.net的内容时得到的是来自链接view-source:https://www.recetasgratis.net/的原始文本,该链接恰好具有类titulo titulo--bloque的43个实例。您需要弄清楚动态加载网页背后的功能,并利用它来获取所有链接的列表。祝你好运。

答案 1 :(得分:0)

您当前的实现只抓取当前的主页。

首先,如果要开始抓取所有25k配方链接,则必须从https://www.recetasgratis.net/busqueda/pag/1到574对其目录的每一页都执行此操作。

您可以通过使用for循环构建url并遍历每个页面并运行来实现此目的

pag_soup.findAll("a",{"class":"titulo titulo--bloque"})每页。

到那时,您应该拥有所有链接,并且将能够开始实际地从每个页面抓取数据-实现将完全由您自己完成。

我建议使用某种平面文件数据存储来跟踪收集的URL。不建议将所有内容都存储在内存中,因为一个异常会破坏整个500多个页面流,并使您需要重新开始。

此外,如果这不是您的网站,请考虑您正在做的事情legal implications