【问题标题】:How to crawl every page in a website using BeautifulSoup如何使用 BeautifulSoup 抓取网站中的每个页面
【发布时间】:2020-08-14 02:16:33
【问题描述】:

有什么方法可以抓取 URL 中的每个页面?

https://gogo.mn/在网址中查找每篇文章页面?

以下是我目前所拥有的

import urllib
import urlparse
import re
from bs4 import BeautifulSoup

url = "https://gogo.mn/"
urls = []

soup = BeautifulSoup(urllib.urlopen(url).read())
for tag in soup.findAll('a',href=True):
        tag['href'] = urlparse.urljoin(url,tag['href'])
        if url in tag['href'] and tag['href'] not in visited:
            urls.append(tag['href'])

由于某种原因,此代码不会爬过所有页面。我如何做到这一点?

【问题讨论】:

  • 你需要从网站的特定部分获取链接并抓取,否则它将是一个无限循环

标签: python python-3.x beautifulsoup


【解决方案1】:

一种方法是使用 selenium web 驱动程序来处理分页(点击页面按钮并抓取)。

另一种方法是使用您正在寻找的 BeautifulSoup。在这里,你需要了解页面链接的格式,即如果主页格式为google.com/,page-1格式为google.com/-1,page-2格式为google.com/-2等等,然后你创建一个基本 url,它是google.com/-。然后使用循环,将页码添加到基本 url,从连接的 url 请求数据,直到最后一页,您将从每个页面获取。参考以下代码示例

base_url = 'google.com/-'
for i in range(number_pages):
    url = base_url+str(i)
    req = requests.get(url)
    soup = BeautifulSoup(req.content)

请注意,以上只是一个示例。总体主题是了解链接模式,并据此创建每个页面对应的链接,循环获取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2019-12-15
    • 1970-01-01
    相关资源
    最近更新 更多