使用 BS4 抓取 Shopee 的评论和评分

时间:2021-04-25 10:50:50

标签: web-scraping beautifulsoup

我是一名商科学生,我想研究 Shopee 中的客户行为。我想创建一个包含评论和评分的数据集。我只是在这里找到了这段代码,但它显示了列表而不是我期望的表格。谁能帮我在csv文件中创建一个数据集。非常感谢您的帮助!

import re
import json
import requests


url = 'https://shopee.vn/-Mã-FASHIONT4MA2-giảm-10K-đơn-50K-Áo-thun-nam-nữ-form-rộng-Yinxx-áo-phông-tay-lỡ-ATL43-i.14746382.6519318270'

r = re.search(r'i\.(\d+)\.(\d+)', url)
shop_id, item_id = r[1], r[2]
ratings_url = 'https://shopee.vn/api/v2/item/get_ratings?filter=0&flag=1&itemid={item_id}&limit=20&offset={offset}&shopid={shop_id}&type=0'

offset = 0
while True:

data = requests.get(ratings_url.format(shop_id=shop_id, item_id=item_id, offset=offset)).json()

# uncomment this to print all data:
#print(json.dumps(data, indent=4))
#leng enumerate tra ket qua duoi dang liet ke
i = 1
for i, rating in enumerate(data['data']['ratings'], 1):
    print(rating['author_username'])
    print(rating['rating_star'])
    print(rating['comment'])
    print('-' * 100)

if i % 20:
    break

offset += 20

'''

1 个答案:

答案 0 :(得分:0)

要创建 pandas 数据框并将其保存到 csv 文件,您可以使用以下示例:

import re
import json
import requests
import pandas as pd


url = "https://shopee.vn/-Mã-FASHIONT4MA2-giảm-10K-đơn-50K-Áo-thun-nam-nữ-form-rộng-Yinxx-áo-phông-tay-lỡ-ATL43-i.14746382.6519318270"

r = re.search(r"i\.(\d+)\.(\d+)", url)
shop_id, item_id = r[1], r[2]
ratings_url = "https://shopee.vn/api/v2/item/get_ratings?filter=0&flag=1&itemid={item_id}&limit=20&offset={offset}&shopid={shop_id}&type=0"

offset = 0
d = {"username": [], "rating": [], "comment": []}
while True:
    data = requests.get(
        ratings_url.format(shop_id=shop_id, item_id=item_id, offset=offset)
    ).json()

    # uncomment this to print all data:
    # print(json.dumps(data, indent=4))
    # leng enumerate tra ket qua duoi dang liet ke
    i = 1
    for i, rating in enumerate(data["data"]["ratings"], 1):
        d["username"].append(rating["author_username"])
        d["rating"].append(rating["rating_star"])
        d["comment"].append(rating["comment"])

        print(rating["author_username"])
        print(rating["rating_star"])
        print(rating["comment"])
        print("-" * 100)

    if i % 20:
        break

    offset += 20
   

df = pd.DataFrame(d)
print(df)
df.to_csv("data.csv", index=False)

打印:

                         username  rating                                            comment
0                   lthn_29122002       5  sản phẩm tuyệt vời\ngiao hàng nhanh\nđóng gói ...
1                    chanchan1754       5  Giao trễ hơn dự kiến 1 ngày nhưng vì áo quá xi...
2                   trangtrinhh16       5  mua của shop mấy đơn rồi, lần nào cũng mua 4-5...
3                   vanchi1001001       5  Áo hình đẹp, rộng rãi. To nhưng mặc ko bị béo,...
4                  nguyentangthuy       5  Tui đặt 2 cái áo ? tui cao 1m68 nặng 50kg á , ...
5                       ngan34538       5  Ảnh minh họa thôi nhưng áo của shop đẹp lắm fo...
6                  thuhuyen100401       5  Đọc rv trên tiktok các bạn khen chất oke nhưg ...
7                      kimloan2_4       5  Mình sẽ tiếp tục ủng hộ shop vải với áo khá ok...
8                         g*****9       5  Chất lượng sản phẩm tuyệt vời. Đóng gói sản ph...
9                         beooobb       5  Áo đẹp xỉuuuuuuu á chờiii, vải dàyyy hơi nóng ...
10                     ngocmai_26       5  Sản phẩm đúng yêu cầu\nGiao hàng nhanhhhh\nĐón...
11                        n*****u       5  Chất bt mỏng tiền nào của đấy okkkkkkkkkkkkkkk...
12                          ahnpl       5  Vải mặc mát áo rộng thoải mái chất quá là okii...
13                        n*****8       5  Với giá như thế này thì mình đánh giá là oke. ...
14                        d*****0       5  chất áo khá ổn giao cũng khá nhanh nchung là o...
15                        t*****8       5  Áo đẹp nhưng vải hơi dày và nóng, với giá thù ...
16                        h*****2       5  Đã nhận được hàng\nCó gặp vài sự cố giao hàng,...
17                        t*****2       5  form áo ok tay lỡ mình m55 trùm qua mông thoải...
18               nguyenthinam2302       5  Uy con mẹ tín, mua cho ng yêuu, ng yêu mặc vào...
19                       thltdh54       5  Áo xinh lắm hihiu \nShop đóng gói cẩn thận ...
20                      t.quin907       5  Áo dày dặn, form rộng đẹp, nói chung với giá n...
21                       tu_chinh       5  Áo mặc thích, rộng, thoải mái, vải ok, phù hợp...
22                        l*****k       5   Đẹp mua lần 2 rồi và sẽ tiếp tục ủng hộ ?????...
23                 nhatquynh_2208       5  Sản phẩm rất tốt, hình ảnh chỉ mang tính chất ...
24                 luongthuhang12       5  Jdlsksncjeoakcbfkalskcndoapdjcndloajxndkdpspsi...
25                        l*****0       5  Sản phẩm ổn, vải dày, chắc là nóng nhưng so vớ...
26                        v*****h       5  Áo đẹp nha, hình in đẹp, kbt có bền ko nhưng g...
27                        v*****n       5  Lần sau sẽ ủng hộ tiếp .....dbsisgsbajkausfsbh...
28                        h*****2       5  Vải áo trắng dày hơn áo đen, chỉ dư nhiều, đườ...
29                        v*****y       5  Giao hàng nhanh, chuẩn bị hàng tầm 2 3 ngày, á...
30                        t*****1       5       Bâhhhwhhshshjhshdjdjjdjdjdjdhdhdhdhdhdhdhdhd
31                        g*****5       5  From áo ok, chất vải bình thường tương xứng vớ...
32                        d*****t       5  Jjfjndbxjjxhduijdbdjxnxhxkxnxjjdnjdjdndnmcmxnx...
33                        h*****n       5  Áo xinh lắm nhooooo, mình 55kg 1m61 mặc rộng v...
34               nguyenhuyenchibi       5  Gói hàng đẹp . Vận chuyển nhanh . Áo rất đẹp s...

...

并保存 data.csv(来自 LibreOffice 的屏幕截图):

enter image description here

相关问题