如何使用请求的不变URL抓取特定页面

时间:2019-02-20 19:23:52

标签: python web-scraping beautifulsoup python-requests

我是Python的初学者,并且是网络剪贴的新手。 目前,我正试图出于教育目的将该网页抓取:https://www.cdiscount.com/maison/achat-meuble-literie/dormipur-matelas-140x190-memoire-de-forme-16-c/f-11755-v920t140190.html#rating

我真正想要的是检索多个页面的每个注释。当我单击“précédent/ suivant”(法语的上一个/下一个)时,URL不会更改,因此我不知道该怎么做。

查看链接上的图片:

我发现此解释可以解决相同的问题:How to scrape multiple pages with an unchanging URL - Python 3

我遵循了@Keyur Potdar给出的步骤,但是例如,我无法使用以下代码检索第二页的文本。它只给我第一页的文字:

import requests
from bs4 import BeautifulSoup

desc = {'productId': 'v920t140190',
'siteMapNodeId': 389,
'CurrentPage': 2,
'StarValueList':'',
'ReviewOrdering': 2,
}
r = requests.get('https://www.cdiscount.com/maison/achat-meuble-literie/dormipur-matelas-140x190-memoire-de-forme-16-c/f-11755-v920t140190.html#rating',params=desc)
soup = BeautifulSoup(r.text, 'html.parser')

tabinfos = []
for a in soup.find_all('p'):
    tabinfos.append(a)

for i in range(0,len(tabinfos)):
    print('Text :')
    print(tabinfos[i].text)

1 个答案:

答案 0 :(得分:0)

页面注释数据是通过ajax请求填充的。您可以使用请求模拟相同内容并获取数据。您可以使用检查工具中的“网络”标签来查找正在发出的Ajax请求。

您获得的数据是html本身,因此您无需执行任何其他工作。您可以在循环中使用相同的脚本,但要使用新的ajax网址。

import requests
from bs4 import BeautifulSoup
no_of_pages=5
all_comments=[]
for page in range(1,no_of_pages+1):
    desc = {'productId': 'v920t140190',
    'siteMapNodeId': 389,
    'CurrentPage': page,
    'StarValueList':'',
    'ReviewOrdering': 2,
    }
    r = requests.get('https://www.cdiscount.com/RWDPSCustomerReviews.mvc/UpdatePagination',params=desc)
    soup = BeautifulSoup(r.text, 'html.parser')
    all_comments.extend([p.text.strip() for p in soup.find_all('p')])
for comment in all_comments:
    print(comment)

输出:

ras bon produit bon rapport qualite prix  envoie rapide
Acheté pour lit de chambre d'amis. Excellent rapport qualité / prix. Perso, je le trouve un peu dur.
Très satisfaite du confort de ce matelas, j’en possède déjà un ce qui me pousse en commander un autre pour ma maman.
Article conforme à la description 
Couchage assez ferme / les tailles sont celles annoncées
Après 1 mois d'utilisation bon matelas s'adapte bien. Il est vrai qu'il est très dur au début. Depuis que je l'ai acheté je ne me leve plus la nuit pour aller au toilette je fait des nuit complete YOUPI, Je le recommande
Matelas agréable au coucher et toucher
Tout parfait comme descriptif
Je passe demain excellente nuits
très confortable après plusieurs mois d'utilisation, prend sa forme en deux jours
Matelas pour ma fille elle est très heureuse car elle dort bien.
Merci
très bon rapport qualité/prix. je recommande aux petits revenus!
Livre rapidement 
Le seul bémol l'odeur du plastique
Super. Très bon rapport qualité prix. A recommander.
Livré en mon absence, le jour convenu devant ma porte donc super à ce niveau . Odeur de neuf un peu désagréable mais pas non persistante, dans une pièce bien aérée elle s'en ira en moins de 2 jours. Un peur dur, neuf oblige, mais plutôt bien pour les dos fragiles.
Confortable, des soucis de dos et maintenant nous dormons parfaitement bien!
Je suis très satisfaite de mon achat c'est un très bon produit. Très bon rapport qualité prix. Je recommande
Livraison rapide et matelas très bien conditionné "sous vide". (matelat roulé, reprend vite sa forme).
Mon grand le trouve confortable, ferme mais juste ce qu'il faut.
Matelas très confort le seul problème que j' ai du mal avec c est si il as une odeur assez forte est ce que ça reste longtemps ou pas?sinon oui je le conseille
Juste un epaisseur de 2 cm qui est memoire forme sans compter la house qui est juste memoire de forme que d un des deux coter
Cela fait le deuxième que j'achète en deux mois dans le cadre de l'installation de mes enfants, ces matelas sont très bien, j'ai été très agréablement surpris. Ils ont aussi l'énorme avantage d'être avant leur ouverture très facilement transportables et rentrent parfaitement sur les sièges arrières d'une petite voiture.
Pour un matelas à mémoire de forme, je trouve qu’il est bien ferme mais me convient quand même. A une assez forte odeur au déballage mais qui part au bout d’une journée (laisser aérée). Rapport qualité/prix il est pas mal. A voir au fil du temps.
En pleine forme lors du réveil, et ce, pdt 2 semaines !
Je dors dessus depuis le mois de novembre et j'en suis très satisfaite il est confortable dur et moelleux en même temps ce qu'il faut pour le dos
dommage tres dure mais faut si habituer ,mais bonne qualité
Le matelas en lui même est bien. Le gros problème c'est l'odeur qu'il dégage . Je ne sais si cela provient du matelas ou de l'emballage mais c'est très désagréable. Malgré l'aération du matelas et de la chambre cela reste très prononcé.
le matelas et bien ferme, j'ai plus de mal au dos, je dort nickel dessus.
Conforme à ce que je m'attendais.Je recommande vivement.

另一种选择是使用selenium模拟单击“下一步”。