Excel 2010 Скачать CSV с динамическим именем с безопасного веб-сайта

0

Я хочу войти на сайт, перейти на страницу, а затем загрузить файл .CSV, который всегда будет заканчиваться динамической строкой из-за того, что он является "обычным".

Я попытался получить доступ к сайту, записав макрос. Однако, поскольку данные не находятся в таблице, макрорекордер не может получить фактический адрес CSV файла.

Текст дисплея всегда:

Results [link]Click to Download[/link]  

Значения html всегда:

<td class="smallText"><b>Results</b> <a href="vendor_report.php?report=custom [insert extremely long string here] ><u>Click to Download</u></a></td>   

Без использования таблицы, есть ли способ добраться до этого.csv и сохранить его на моем ПК?
Я знаю, что использование <td> означает, что это часть таблицы, но она определенно не подбирает ее, я прошел через сайт с помощью макрорекордера и не собирал внутреннее содержимое со страницы.
HTTPS://[домен].php = vieworders В.Ф.

Я также подумал, чтобы перейти на страницу сайта, выделить текст, скопировать и вставить на запасной лист в моей книге, а затем использовать код L42, ранее написанный здесь (ниже), однако я даже не могу заставить copy & paste работать правильно.

For Each hlink In ThisWorkbook.Sheets("NameOfYourSheet").Hyperlinks
    Set wb = Workbooks.Open(hlink.Address)
    wb.SaveAs saveloc & hlink.Range.Offset(0,1).Value & ".xlsx"
    wb.Close True
    Set wb = Nothing
Next

Пожалуйста, порекомендуйте. Заранее спасибо.

ОБНОВИТЬ
Я нашел таблицу, которая скрывается в Table 2. Это, однако, в разгар многих других текстов.
Когда я скопировал и вставил содержимое таблицы на свой листок, у меня возникли проблемы с отображением ссылки, так как это значение HTML, поэтому я могу использовать это со своей второй опцией (открытые ссылки из электронной таблицы).
Это может быть проблемой с исходным кодом Get Data я использую.

Вот как это выглядит. Ячейки с обеих сторон заполнены, а также огромный фрагмент (заглушенный) текст в B20

Может ли Regex быть полезным здесь?

Изображение 174551

Теги:
csv
excel
web-scraping

1 ответ

0

Вы можете попробовать использовать объект XMLHTTP с потоком:

Sub SO()

Dim objStream As Object, strURL As String

Set objStream = CreateObject("ADODB.Stream")
strURL = "vendor_report.php?report=custom [insert extremely long string here]"

With CreateObject("Microsoft.XMLHTTP")
    .Open "GET", strURL, False
    .Send
    If .Status = 200 Then
        objStream.Open
        objStream.Type = 1
        objStream.Write .ResponseBody
        objStream.SaveToFile "C:\users\bloggsj\output.csv", 2
        objStream.Close
    End If
End With

Set objStream = Nothing

End Sub

При необходимости измените путь сохранения.

  • 0
    благодарю вас. Я смог перейти на страницу с помощью bit.ly/1ETIAbl , затем я запустил ваш код. Ваш код дает мне новый .csv (правильный), однако он вытягивает данные страницы в него, он не тянет существующий .csv вниз. Детали строки после 'custom' меняются, может ли это быть проблемой? Большое спасибо: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню