DEV Community

loading...

如何获取Google Serp页面

Qing
・1 min read

在前面内容中,我们重点在解析html页面,获取想要的信息。那么这个页面如何去获取,第一种方法是引入requests包,例如下面这样。

def get_source(url: str) -> BeautifulSoup:
    """获取网页内容
    Args:
        url (str): 要爬取的URL

    Returns:
        BeautifulSoup: The soup of the page source
        """
    content = requests.get(url)
    return BeautifulSoup(content.text, 'html.parser')
Enter fullscreen mode Exit fullscreen mode

按照这样的方法,我们获取到的html源码并不完整,缺少右侧的Wiki内容,如图。

image

原因是因为很多网页需要js代码执行来渲染内容,也就是说我们需要等待页面执行完js代码,才能够爬取到相关的内容。

使用pyppeteer获取源码

这里我们采用pyppeteer的方案来解决,代码如下:

async def get_source( url: str):
    browser = await launch({'headless': True})
    page = await browser.newPage()
    await page.goto(url)
    try:
        # 等待知识页面加载,超时时间设置为3s
        await page.waitForSelector('.kp-wholepage', timeout=3000)
    except TimeoutError:
        print('Wait for knowledge failed')

    # 获取网页内容
    content = await page.content()


    await browser.close()

    return BeautifulSoup(content, 'html.parser')
Enter fullscreen mode Exit fullscreen mode

插件机制

这是两种获取源码手段.

Discussion (0)