簡體   English   中英

如何使用不變的URL刮取多個頁面 - Python 3

[英]How to scrape multiple pages with an unchanging URL - Python 3

我最近聯系了網頁抓取並嘗試網頁抓取各種頁面。 目前,我正試圖抓住以下網站 - http://www.pizzahut.com.cn/StoreList

到目前為止,我已經使用硒來獲取經度和緯度。 但是,我的代碼現在只提取第一頁。 我知道有一個動態網頁抓取執行javascript並加載不同的頁面,但很難找到一個正確的解決方案。 我想知道是否有辦法訪問其他49頁左右,因為當我點擊下一頁時,URL不會因為設置而改變,所以我不能每次都迭代一個不同的URL

以下是我的代碼到目前為止:

import os
import requests
import csv
import sys
import time
from bs4 import BeautifulSoup

page = requests.get('http://www.pizzahut.com.cn/StoreList')

soup = BeautifulSoup(page.text, 'html.parser')

for row in soup.find_all('div',class_='re_RNew'):
    name = row.find('p',class_='re_NameNew').string
    info = row.find('input').get('value')
    location = info.split('|')
    location_data = location[0].split(',')
    longitude = location_data[0]
    latitude = location_data[1]
    print(longitude, latitude)

非常感謝您的幫助。 非常感激

獲取數據的步驟:

在瀏覽器中打開開發人員工具(對於谷歌瀏覽器,它是Ctrl + Shift + I )。 現在,轉到位於“ Network選項卡內的XHR選項卡。

在此輸入圖像描述

完成后,單擊下一頁按鈕。 您將看到以下文件。

在此輸入圖像描述

單擊該文件。 General塊中,您將看到我們需要的這兩件事。

在此輸入圖像描述

向下滾動,在“ 表單數據”選項卡中,您可以看到3個變量

在此輸入圖像描述

在這里,您可以看到更改pageIndex的值將提供所需的所有頁面。

現在,我們已經獲得了所有必需的數據,我們可以使用上述數據為URL http://www.pizzahut.com.cn/StoreList/Index編寫POST方法。

碼:

我將向您展示刮取前2頁的代碼,您可以通過更改range()來刮取您想要的任意數量的頁面。

for page_no in range(1, 3):
    data = {
        'pageIndex': page_no,
        'pageSize': 10,
        'keyword': '輸入餐廳地址或餐廳名稱'
    }
    page = requests.post('http://www.pizzahut.com.cn/StoreList/Index', data=data)
    soup = BeautifulSoup(page.text, 'html.parser')

    print('PAGE', page_no)
    for row in soup.find_all('div',class_='re_RNew'):
        name = row.find('p',class_='re_NameNew').string
        info = row.find('input').get('value')
        location = info.split('|')
        location_data = location[0].split(',')
        longitude = location_data[0]
        latitude = location_data[1]
        print(longitude, latitude)

輸出:

PAGE 1
31.085877 121.399176
31.271117 121.587577
31.098122 121.413396
31.331458 121.440183
31.094581 121.503654
31.270737000 121.481178000
31.138214 121.386943
30.915685 121.482079
31.279029 121.529255
31.168283 121.283322
PAGE 2
31.388674 121.35918
31.231706 121.472644
31.094857 121.219961
31.228564 121.516609
31.235717 121.478692
31.288498 121.521882
31.155139 121.428885
31.235249 121.474639
30.728829 121.341429
31.260372 121.343066

注意:您可以通過更改pageSize的值來更改每頁的結果(當前為10)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM