提问者:小点点

使用Python中的beautifulsoup请求从一个网站中删除多个网页


我想在一个网站上创建多个wb页面。 现在我的代码可以从第一页刮评论。 我想它从相关页面刮评论。 在本例中直到第8页。 这是以下网站的链接:https://www.mouthshut.com/product-reviews/kotak-811-mobile-banking-reviews-925917218

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

URL = "https://www.mouthshut.com/product-reviews/Kotak-811-Mobile-Banking-reviews-925917218"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
reviews = []  # a list to store reviews

# Use a CSS selector to extract all the review containers
review_divs = soup.select('div.col-10.review')
for element in review_divs :
    review = {'Review_Title': element .a.text, 'URL': element .a['href'], 'Review': element .find('div', {'class': ['more', 'reviewdata']}).text.strip()}
    reviews.append(review)

df = pd.DataFrame(reviews)
print(df)

我想在一个数据框架中存储8页的所有评论DF。 我会很感激你的帮助。 谢谢


共2个答案

匿名用户

从第一页刮除所有评论后切换到下一页,这样做直到你得到所有评论。 只需让您的程序点击底部的“NextPage”箭头即可继续。

匿名用户

这就是第一个页面https://www.mouthshut.com/product-reviews/kotak-811-mobile-banking-reviews-925917218,对。 其余页面的URL末尾有-page-x。 所以您可以在脚本中创建一个for循环,如下所示。

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

URL = ""

for x in range(1, 9):
    if x == 1:
        URL = "https://www.mouthshut.com/product-reviews/Kotak-811-Mobile-Banking-reviews-925917218"
    else:
        URL ="https://www.mouthshut.com/product-reviews/Kotak-811-Mobile-Banking-reviews-925917218-page-{}".format(x)

    r = requests.get(URL)
    soup = BeautifulSoup(r.content, 'html5lib')
    reviews = []  # a list to store reviews

    # Use a CSS selector to extract all the review containers
    review_divs = soup.select('div.col-10.review')
    for element in review_divs :
        review = {'Review_Title': element .a.text, 'URL': element .a['href'], 'Review': element .find('div', {'class': ['more', 'reviewdata']}).text.strip()}
        reviews.append(review)

    df = pd.DataFrame(reviews)
    print(df)