如何使用不变的网址抓取多个页面-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)

非常感谢您的帮助。非常感激

Keyur Potdar:

获取数据的步骤:

在浏览器中打开开发者工具(谷歌浏览器是Ctrl+ Shift+ I)。现在,转到XHR选项卡内的Network选项卡。

在此处输入图片说明

之后,单击下一页按钮。您将看到以下文件。

在此处输入图片说明

点击该文件。常规块中,您将看到我们需要的这两件事。

在此处输入图片说明

向下滚动,在“ 表单数据”选项卡中,您可以看到以下三个变量:

在此处输入图片说明

在这里,您可以看到更改的值pageIndex将提供所有需要的页面。

现在,我们已经获得了所有必需的数据,我们可以使用上述数据POST为URL 写一个方法http://www.pizzahut.com.cn/StoreList/Index

码:

我将向您展示刮擦前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)的值来更改每页的结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python无法使用不变的网址抓取多个页面

如何使用不变的网址以网络方式刮擦具有不同城市的多个页面-Python 3

Python / Seleium:使用不变的网址抓取网站

无法抓取网址不变的网站页面-python

如何在R中使用不变的网址抓取多个页面?

在Python 3中使用BeautifulSoup抓取网址

如何使用Python和BeautifulSoup抓取多个Google页面

如何使用Selenium(Python)网页抓取多个页面

尝试使用 Python 3 抓取页面的错误请求

Python 3 & Selenium - 如何组合多个 For 循环 - 抓取 Web 表

美丽的汤。使用Python3抓取多个URL

如何使用scrapy在Python中抓取网址

使用 BeautifulSoup 在 python 中抓取多个页面

使用python为多个页面抓取网页

如何使用 Python 3 抓取每个 td 标签内容

如何使用Python 3登录网站并进行抓取

网址不变时如何使用python下载文件

如何使用BeautifulSoup和Python抓取页面?

如何使用python从多个维基百科页面抓取数据?

如何使用python和beautifulsoup4循环抓取网站中多个页面的数据

如何使用python从具有多个动态选择字段的页面中抓取数据?

Python 3,如何使用Python从此页面保存数据?

如何在抓取网页时增加python 3中的请求页面时间?

使用python从div抓取h3

使用python 3从网页抓取数据

使用python3进行网页抓取

Python 网页抓取 | 如何通过Beautifulsoup抓取具有不同页码的多个网址?

Python Web抓取多个页面

Python 3:如何提取网址图片?