Member 11350729 Ответов: 1

Как скачать pdf файл с сайта pdfdrive.net автоматически ?


Я попытался создать программу, которая будет скачивать электронные книги(pdf) из www.pdfdrive.net но сайт сначала проверяет доступность и состояние из pdf-файла, а затем дает ссылку на pdf-файл.
Но, к сожалению, я не могу обойти эту проблему. доступность процедура при выполнении в моей программе C#.

когда я использую "Inspect Code" в своем браузере Mozilla, он показывает мне URL-адрес pdf
<div id="alternatives" class="mt-2" style="text-align: left;">

<h2 style="color: #696969;line-height: 39px;padding-top: 3px;text-align: center;" id="file-available">
                        Your download will begin in a moment.<br>If it doesn't 
                        <a class="btn btn-success btn-responsive" href="https://ssrvmmath.files.wordpress.com/2014/07/irodov-problems_in_general_physics.pdf" target="_blank" rel="nofollow" onclick="c(); ga('send', 'event', 'Download', 'download-page');">Go to PDF</a>
</h2>
<div style="font-size:12px;text-align:center;margin-bottom: 7px;">
                    hosted by ssrvmmath.files.wordpress.com.
                    <a href="/home/dmca" target="_blank" rel="_nofollow">Report</a></div>
<div style="text-align:center">
    <span class="sexy_line big"></span>
    <form class="form-inline" onsubmit="createAlert(); return false;" id="alert-form" style="margin-top:12px;">
        
        <div class="input-group" style="margin: auto;padding: 0px 12px;">
            <img src="/assets/img/pd-alerts.png" style="width:218px; height:41px; border:0; margin-right: 11px;" class="hidemobile">
            <input class="form-control" autocomplete="on" id="alert-email" placeholder="Enter your email" style="" value="" type="email">
            <span class="input-group-btn">
                <button type="submit" class="btn btn-info btn-responsive">Create Alert</button>
            </span>
        </div>
   <div class="row subscribe-options">
    <div class="col">
     <input checked="checked" id="newversion" name="newversion" style="vertical-align: middle;" type="checkbox"> Alert me when the new version of the file available.
    </div>
    <div class="col">
    <input checked="checked" id="subscribe" name="subscribe" style="vertical-align: middle;" type="checkbox"> Send me weekly top trending free books
    </div>
  </div>

</form>
            <span class="sexy_line big"></span>
            
</div>
<script>ga('send', 'event', 'Download-result', 'healthy');</script>

</div>


Но когда я использую "просмотр исходного кода", он просто показывает

<div id="alternatives" class="mt-2" style="display:none; text-align: left;"></div>


Я хочу сохранить html-код, содержащий url-адрес pdf-файла () в файле с именем pip.txt

Что же мне делать????

Что я уже пробовал:

Я сначала попробовал загрузить сайт в веб-браузер по умолчанию, который не писал...
Я также попробовал следующий фрагмент кода...
var request = (HttpWebRequest)WebRequest.Create("https://www.pdfdrive.net/irodov-problems-in-general-physics-d24882553.html");
					request.Method = "GET";
					request.AllowAutoRedirect = false;
					request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1";
					request.Headers.Add("DNT", "1");
					request.Accept = "text/html,application/xhtml+xml,application/xml";
	
					using(var response = (HttpWebResponse)request.GetResponse())
					using(var stream = response.GetResponseStream())
					using (var sr = new StreamReader(stream, Encoding.UTF8))
					{
					    responseStr = sr.ReadToEnd();
					    response.Close();
					    if (stream != null)
					        stream.Close();
					    sr.Close();
					    
					    File.WriteAllText(Environment.CurrentDirectory + "/pip.txt", e.Url.ToString() + responseStr);
					}

Richard MacCutchan

Если вы тот же человек, который опубликовал сообщение Загрузка pdf - файла из [удалено] программно[^], то, пожалуйста, удалите дубликат учетной записи

1 Ответов

Рейтинг:
4

David_Wimbley

Поскольку в источнике представления HTML-код не заполнен, это будет означать, что HTML-код в консоли загружается с помощью вызовов ajax. Эти вызовы, я полагаю, не срабатывают, если вы пытаетесь загрузить HTML (что вы делаете на основе своего кода), что объясняет, почему html, который вы загружаете, не содержит ссылки, которую вы ищете.

Если вы посмотрите на консоль, то увидите, что она использует AJAX-вызов /ebook/broken?id=, который в случае успеха загрузит HTML-код, позволяющий вам щелкнуть ссылку для загрузки.

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

Таким образом, вы используете неправильный URL-адрес, но учитывая, что у них есть идентификатор сеанса для проверки вызова на их стороне на наличие неработающей ссылки, вы, вероятно, не сможете выполнить то, что пытаетесь сделать, если не выясните, как генерировать идентификаторы сеанса, которые считаются действительными их системой.


Arnav Das

Если я попытаюсь программно нажать кнопку загрузки внутри запроса??? Смогу ли я тогда перейти к PDF-файлу????
Если нет, то есть ли какой - либо другой процесс для загрузки PDF-файла???

Arnav Das

Большое спасибо....
Я действительно пробовал использовать браузер по умолчанию, но не с selenium...
Я обязательно попробую это сделать......
Еще раз благодарю вас.....