列表中的链接-如何使用python pdfkit生成多个pdf

时间:2019-03-07 19:04:17

标签: python list web pdfkit

我目前正在试图弄清楚如何获取链接列表并使python运行所有链接并将其另存为pdf。 (我不是python专家)

我找到了一个名为“ pdfkit”的python软件包,它非常好,但是如何设置它以使其遵循我的网址列表,并始终将pdf保存为其他名称?

import pdfkit

config = pdfkit.configuration(wkhtmltopdf="C:\\Program Files (x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe")

pdfkit.from_url('http://google.com', 'MyPDF.pdf', configuration=config)

这是我当前的代码,可以说我有一个10个网页的列表,我想另存为10个不同的pdf文件,我如何进行设置以允许这样做呢?

另一个问题是,我需要登录该页面才能从链接中抓取信息,您将如何实现?

最好的问候,

2 个答案:

答案 0 :(得分:0)

第一个问题的答案:

import pdfkit

config = pdfkit.configuration(wkhtmltopdf="C:\\Program Files (x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe")

url_list = [
    ['http://google.com', 'google.com.pdf'],
    ['http://facebook.com', 'facebook.com.pdf'],
    ['http://yahoo.com', 'yahoo.com.pdf'],
]

for k, v in url_list:
    pdfkit.from_url(k, v, configuration=config)

要回答第二个问题,您可以使用请求模块会话功能先登录,然后将cookie传递给pdfkit以下载页面。参见Create PDF of a https webpage which requires login using pdfkit

答案 1 :(得分:0)

import selenium.webdriver
import pdfkit
import time

config = pdfkit.configuration(wkhtmltopdf="C:\\Program Files 
(x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe")

driver = selenium.webdriver.Chrome()


driver.get('https://www.linkedin.com/')
time.sleep(1)

driver.find_element_by_id('login-email').send_keys('username')
driver.find_element_by_id('login-password').send_keys('password')
driver.find_element_by_id('login-submit').click()
time.sleep(2)

driver.save_screenshot('output.png') # only visible part

print(driver.page_source)
pdfkit.from_string(driver.page_source, 'file.pdf')