очистка веб-страниц в текстовом режиме - PullRequest
1 голос
/ 07 июля 2010

В настоящее время я использую watir для очистки веб-сайта, скрывая все данные от обычного HTML-источника. Если я не ошибаюсь, они используют XML и технологию AJAX, чтобы скрыть это. Firefox может видеть его, но он отображается через «DOM Source of selection».

Все работает нормально, но сейчас я ищу эквивалентный инструмент, но все должно быть сделано без браузера. Все должно быть сделано в текстовом файле.

Фактически, прямо сейчас, watir использует мой браузер для эмуляции страницы и возвращает мне весь HTML-код, который я ищу. Хотелось бы тоже самое но без браузера.

Возможно ли это?

Спасибо С уважением Tak

Ответы [ 2 ]

1 голос
/ 14 июля 2010

Лучше всего было бы использовать что-то вроде webscarab и захватывать URL-адреса AJAX-запросов, которые выполняет ваш браузер.
Таким образом, вы можете просто получить "важные" данные самостоятельно, имитируяэти вызовы с любой библиотекой HTTP

0 голосов
/ 29 ноября 2013

Это возможно с небольшой кодировкой Python.

Я написал простой скрипт для поиска местоположений грузовых офисов.

Первые шаги

  1. Откройте страницу ajax с помощью Google Chrome, например, на турецком языке, но вы можете это понять. http://www.yurticikargo.com/bilgi-servisleri/Sayfalar/en-yakin-sube.aspx
  2. Нажмите F12, чтобы отобразить нижние инструменты разработчика, и перейдите на вкладку Сеть .
  3. Перемещение по вкладке XHR внизу.
  4. Сделайте AJAX-запрос, выбрав элемент в первом поле со списком. И перейдите на Вкладка Заголовки
  5. Вы будете GetTownByCity на левой панели, щелкните по нему и осмотрите его.

    Request URL: (...)/_layouts/ArikanliHolding.YurticiKargo.WebSite/ajaxproxy- sswservices.aspx/GetTownByCity

    Request Method:POST

    Status Code:200 OK

  6. В элементе дерева Request Payload вы увидите

    Request Payload :{cityId:34} заголовок.

  7. Это поможет нам реализовать код Python.

Давай сделаем это.

#!/usr/bin/env python
# -*- coding: utf-8 -*-    
import requests
import json
# import simplejson as json
baseUrl = 'http://www.yurticikargo.com/'
ajaxRoot = '_layouts/ArikanliHolding.YurticiKargo.WebSite/'
getTown = 'ajaxproxy-sswservices.aspx/GetTownByCity'
urlGetTown = baseUrl + ajaxRoot + getTown
headers = {'content-type': 'application/json','encoding':'utf-8'}  # We are sending JSON headers, equivalent to Python dictionary
for plaka in range(1,82): # Because Turkiye has number plates from 1 to 81
    payload = {'cityId':plaka}
    r = requests.post(url, data=json.dumps(payload), headers=headers)
    data = r.json() # Returning data is in JSON format, if you need HTML use r.content()
    # ... Process the fetched data with JSON parser,
    # If HTML format, Beautiful Soup, Lxml, or etc...

Обратите внимание, что этот код является частью моего рабочего кода, и он написан на лету, наиболее важным является Я не тестировал его. Для его запуска могут потребоваться небольшие изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...