【发布时间】:2016-06-02 15:22:13
【问题描述】:
我想在下面的 url 页面中获取 pdf 链接的完整列表: 'http://www1.kiwoom.com/nkw.templateFrameSet.do?m=m0601010000'
问题是网页内部使用javascript显示链接,我无法获取pdf链接。
实际上,我尝试使用通过谷歌搜索找到的各种方法进行解析。但我失败了。 您能提出解决问题的正确方法吗?
以下是我尝试过但失败的代码:
def crawle_kiwoom_mletter():
if not os.path.exists(dir_output_mletter):
os.makedirs(dir_output_mletter)
#urlformat = 'https://www.kiwoom.com/nkw.template.do?m=m0601010101&s_menu=ML&s_sqno=4784'
urlformat = 'http://www1.kiwoom.com/nkw.templateFrameSet.do?m=m0601010000'
index = -1
while True:
index = index + 1
url = urlformat.format(index)
print('processing {}...'.format(url))
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'lxml')
#print_anchors(soup)
print(soup.prettify())
'''
if browse_mbriefing_linkpages(soup) == False:
break
'''
break
'''
https://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/
'''
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
def crawl_kiwoom_mletter2():
url = 'http://www1.kiwoom.com/nkw.templateFrameSet.do?m=m0601010000'
url='http://www1.kiwoom.com/nkw.templateFrameSet.do?m=m0601010000&source=&xdr='
#This does the magic.Loads everything
r = Render(url)
#result is a QString.
result = r.frame.toHtml()
print(result)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
'''
http://stackoverflow.com/questions/28289699/python-web-scraping-for-javascript-generated-content
'''
def crawl_kiwoom_mletter3():
browser = webdriver.Firefox()
url = 'http://www1.kiwoom.com/nkw.templateFrameSet.do?m=m0601010000'
browser.get(url)
res = browser.page_source
print(res)
driver.close()
【问题讨论】:
-
当然,Selenium 是要走的路……
-
那么你到底想得到什么? “Morning Letters”的链接实际上没有链接,它们是用 pdf 更新页面的 ajax 调用。您是否正在尝试下载 pdf 文件?或者参考链接的html页面?
-
@MorganG 我正在尝试下载我尚未下载的所有 pdf。感谢 Kenavoz 的代码,我可以下载几个 pdf。但是我想知道如何分析这种网页,以便制作一个定期下载工具。
标签: python selenium beautifulsoup web-crawler