网页抓取:模仿“加载更多结果”按钮而无需硒的AJAX请求

时间:2019-06-27 01:00:34

标签: python ajax python-3.x web-scraping

我有以下代码(在回答其他问题时提供给我。它与我的原始代码具有相同的作用,只是更干净)。

'''python
from bs4 import BeautifulSoup
import requests
import pandas as pd

url2 = 'https://www.map-testing.com/map-search/?start=3&searchOptions=AllResults'
urlh2 = requests.get(url2)

soup = BeautifulSoup(urlh2.text, 'html.parser')
results = soup.find_all('div', attrs= {'class' : 'search-result'})

jsonData = []

for row_obj in results:
    data = {}
    row = row_obj.find("div")

    #scrap Manufacturer
    manufacturer = row.find("div", string="Manufacturer")
    data['Manufacturer']  = manufacturer.find_next('div').text.strip()

    # scrap Model Name
    modelName = row.find("div", string="Model Name")
    data['Model Name'] = modelName.find_next('div').text.strip()

    # scrap Model Number
    modelNumber = row.find("div", string="Model Number")
    data['Model Number'] = modelNumber.find_next('div').text.strip()

    # scrap MaP Report No.
    maPReportNo = row.find("div", string="MaP Report No.")
    data['MaP Report No.'] = maPReportNo.find_next('div').text.strip()

    # scrap MaP Flush Score
    maPFlushScore = row.find("div", string="MaP Flush Score")
    data['MaP Flush Score'] = maPFlushScore.find_next('span').text.strip()

    # scrap Specifications
    specifications = row.find_all("li")
    data['Specifications'] = ",".join(i.text.strip() for i in specifications)

    jsonData.append(data)

df = pd.DataFrame(jsonData)

'''

我想做的是从代码中收集网站的所有数据并将其保存到DataFrame,但是该网站使用AJAX加载了我需要的其他信息。

我发现的唯一解决方案是使用Selenium,我希望不要使用它,因为我想对我需要做些什么以模仿“加载更多结果”按钮在网站上所做的事情有更深入的了解。

我在Chrome的开发人员标签中查看了代码,发现XHR标签包含了XHR的所有标头,并指出了正在使用哪种类型的请求方法。我不确定的是哪个XHR为我提供了我正在寻找的信息以及如何复制“加载更多结果”按钮来访问此信息。在这种情况下,我是否使用POST或GET获取所需的信息?任何指导都会有所帮助。

0 个答案:

没有答案