Я пытаюсь понять различные случаи использования urllib2 для чтения веб-контента, и, похоже, некоторые проверки происходят на веб-сайте gifts.com, что мешает мне читать все html.python - urllib2 запрос не возвращает все html
import urllib2
from bs4 import BeautifulSoup
url = 'http://www.gifts.com'
request = urllib2.Request(url)
request.add_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36')
page = urllib2.urlopen(request)
soup = BeautifulSoup(page,'html.parser')
print soup
У меня была аналогичная проблема в прошлом, но был в состоянии исправить это, добавив заголовок «User-Agent», но это, кажется, некоторые Javascript проверить, что предотвращение доступа ... результат все содержание страницы до:
>>><script>var readyStateHandlerPDP = document.onreadystatechange;var AddPDPPrefetchFiles = function (SiteVersionData) {var _siteVersionNumber = SiteVersionData.GetSiteVersionNumber();var onDeferredLoadPDP = function() {/* append prefetch files for PDP to head */var head = $('head');head.append('<link rel="prefetch" href="//static.prvd.com/client/javascript/harmony/harmonytop.min.js?v=' + _siteVersionNumber + '">');head.append('<link rel="prefetch" href="//static.prvd.com/client/javascript/pdpcommon/pdpcommon.min.js?v=' + _siteVersionNumber + '">');head.append('<link rel="prefetch" href="//static.prvd.com/client/javascript/harmony/harmony.min.js?v=' + _siteVersionNumber + '">');head.append('<link rel="prefetch" href="//www.proflowers.com/product/controls/harmonytemplates/harmonytemplates.aspx?v=' + _siteVersionNumber + '">');};if (!readyStateHandlerPDP) {document.onreadystatechange = function() {if (document.readyState === "complete")onDeferredLoadPDP();}} else {readyStateHandlerPDP();onDeferredLoadPDP();}}(window.SiteVersionData);</script
<link href="http://static.prvd.com/client/stylesheets/widgets/pseudoproduct.css?v=2016.2.24.1" rel="stylesheet" type="text/css"/></meta></meta></meta></meta></meta></head></html>
где страница обрывается, хотя HTML продолжается, если я иду на сайт и посмотреть исходный код страницы.
У меня нет никакой заинтересованности в маскировке моей личности или анонимном запросе, поэтому любая помощь в том, как лучше всего имитировать обычный просмотр веб-страниц, чтобы передать эту проверку, была бы полезна.
Обратите внимание, что 'urllib2' не выполняет каких-либо JavaScript на всех, так что любое содержимое страницы, которая создается с помощью Javascript не будет появляться в ваших данных. Попробуйте найти стороннюю библиотеку без браузера, которая выполняет JS. – Kevin
Скорее всего, страница использует этот Javascript для загрузки остальной части содержимого в браузере. –