python爬虫爬取的数据怎么转换_python爬虫抓取的数据转换成PDF

本文给大家分享的是使用python爬虫实现把《廖雪峰的 Python 教程》转换成PDF的方法和代码,有需要的小伙伴可以参考下

写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 Python 教程 爬下来做成 PDF 电子书方便大家离线阅读。

开始写爬虫前,我们先来分析一下该网站1的页面结构,网页的左侧是教程的目录大纲,每个 URL 对应到右边的一篇文章,右侧上方是文章的标题,中间是文章的正文部分,正文内容是我们关心的重点,我们要爬的数据就是所有网页的正文部分,下方是用户的评论区,评论区对我们没什么用,所以可以忽略它。

工具准备

弄清楚了网站的基本结构后就可以开始准备爬虫所依赖的工具包了。requests、beautifulsoup 是爬虫两大神器,reuqests 用于网络请求,beautifusoup 用于操作 html 数据。有了这两把梭子,干起活来利索,scrapy 这样的爬虫框架我们就不用了,小程序派上它有点杀鸡用牛刀的意思。此外,既然是把 html 文件转为 pdf,那么也要有相应的库支持, wkhtmltopdf 就是一个非常好的工具,它可以用适用于多平台的 html 到 pdf 的转换,pdfkit 是 wkhtmltopdf 的Python封装包。首先安装好下面的依赖包,

接着安装 wkhtmltopdfpip install requests

pip install beautifulsoup

pip install pdfkit

安装 wkhtmltopdf

Windows平台直接在 wkhtmltopdf 官网2下载稳定版的进行安装,安装完成之后把该程序的执行路径加入到系统环境 $PATH 变量中,否则 pdfkit 找不到 wkhtmltopdf 就出现错误 “No wkhtmltopdf executable found”。Ubuntu 和 CentOS 可以直接用命令行进行安装$ sudo apt-get install wkhtmltopdf # ubuntu

$ sudo yum intsall wkhtmltopdf # centos

爬虫实现

一切准备就绪后就可以上代码了,不过写代码之前还是先整理一下思绪。程序的目的是要把所有 URL 对应的 html 正文部分保存到本地,然后利用 pdfkit 把这些文件转换成一个 pdf 文件。我们把任务拆分一下,首先是把某一个 URL 对应的 html 正文保存到本地,然后找到所有的 URL 执行相同的操作。

用 Chrome 浏览器找到页面正文部分的标签,按 F12 找到正文对应的 p 标签:

,该 p 是网页的正文内容。用 requests 把整个页面加载到本地后,就可以使用 beautifulsoup 操作 HTML 的 dom 元素 来提取正文内容了。

具体的实现代码如下:用 soup.find_all 函数找到正文标签,然后把正文部分的内容保存到 a.html 文件中。def parse_url_to_html(url):

response = requests.get(url)

soup = BeautifulSoup(response.content, "html5lib")

body = soup.find_all(class_="x-wiki-content")[0]

html = str(body)

with open("a.html", 'wb') as f:

f.write(html)

第二步就是把页面左侧所有 URL 解析出来。采用同样的方式,找到 左侧菜单标签

具体代码实现逻辑:因为页面上有两个uk-nav uk-nav-side的 class 属性,而真正的目录列表是第二个。所有的 url 获取了,url 转 html 的函数在第一步也写好了。def get_url_list():

"""

获取所有URL目录列表

"""

response = requests.get("http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000")

soup = BeautifulSoup(response.content, "html5lib")

menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]

urls = []

for li in menu_tag.find_all("li"):

url = "http://www.liaoxuefeng.com" + li.a.get('href')

urls.append(url)

return urls

最后一步就是把 html 转换成pdf文件了。转换成 pdf 文件非常简单,因为 pdfkit 把所有的逻辑都封装好了,你只需要调用函数 pdfkit.from_filedef save_pdf(htmls):

"""

把所有html文件转换成pdf文件

"""

options = {

'page-size': 'Letter',

'encoding': "UTF-8",

'custom-header': [

('Accept-Encoding', 'gzip')

]

}

pdfkit.from_file(htmls, file_name, options=options)

执行 save_pdf 函数,电子书 pdf 文件就生成了,效果图:

总结

总共代码量加起来不到50行,不过,且慢,其实上面给出的代码省略了一些细节,比如,如何获取文章的标题,正文内容的 img 标签使用的是相对路径,如果要想在 pdf 中正常显示图片就需要将相对路径改为绝对路径,还有保存下来的 html 临时文件都要删除,这些细节末叶都放在github上。

【相关推荐】

1. Python免费视频教程

2. Python面向对象视频教程

3. Python学习手册

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现Python电影爬取数据可视化,需要使用Python爬虫库和数据可视化库。 首先,要使用Python爬虫库进行电影信息的爬取。可以使用requests库来发送HTTP请求并获取电影网站的页面内容,然后使用BeautifulSoup库来解析页面内容,提取出电影的信息,例如电影名称、导演、演员、评分等。 接下来,可以使用Python数据可视化库来将爬取到的电影信息进行可视化展示。常用的数据可视化库有Matplotlib和Seaborn。可以使用Matplotlib来绘制各类图表,例如柱状图、折线图、散点图等,用于展示电影的评分分布、导演和演员的出演频率等信息。如果需要更加美观的图表,也可以尝试使用Seaborn库。 除了使用Matplotlib和Seaborn绘制图表外,还可以使用其他的数据可视化库来展示电影信息。例如,可以使用Plotly库来创建交互式图表,让用户可以自由地进行放大、缩小和查看详细信息。此外,还可以使用Pandas库对爬取到的电影信息进行数据处理和分析,并使用其内置的可视化工具绘制图表。 总结起来,要实现Python电影爬取数据可视化,需要使用Python爬虫库进行信息爬取,然后使用数据可视化库将爬取到的电影信息进行可视化展示。通过合理选择和使用相关库,可以实现多样化的电影信息可视化效果。 ### 回答2: Python是一种流行的编程语言,可以用于从网上爬取电影数据并对其进行数据可视化。首先,我们可以使用Python中的一个网络爬虫库,如BeautifulSoup或Scrapy,来从电影网站上爬取电影信息。 这可以通过向网站发送HTTP请求并解析响应的HTML来实现。 一旦我们获得了电影数据,我们可以使用Python中的各种数据处理和分析库,如Pandas和Matplotlib,来对数据进行可视化。 首先,我们可以使用Pandas将数据转换为每部电影具有的特定字段(如电影名称,导演,演员,评分等)的表格形式。 然后,利用Matplotlib等库绘制各种图表,如条形图、饼图和散点图等,来展示电影数据的各个方面。 例如,我们可以绘制一张电影评分的分布图,以展示电影评分的分布情况。 这样可以帮助我们了解电影的受欢迎程度和观众对电影的反应。 另外,我们还可以根据电影类型,绘制各个类型电影的数量条形图,以展示不同类型电影的比例和受欢迎程度。 我们还可以使用地理信息库,如Folium,将电影数据与地理位置相关联,绘制热力图来展示不同地区的电影拍摄数量。 这样可以帮助我们了解电影产业在不同地区的发展情况,并为电影拍摄的选择提供参考。 Python的强大和灵活性使得电影数据爬取和可视化变得非常简单和高效。 从爬取数据到进行数据清洗和可视化,Python可以帮助我们对电影数据进行深入的分析和研究。 ### 回答3: Python是一种功能强大的编程语言,可以用于爬取电影数据并进行数据可视化。下面是一个简单的步骤来完这个任务。 首先,我们需要使用Python中的爬虫库(例如BeautifulSoup或Scrapy)来抓取电影数据。可以选择使用网站上的API或者直接爬取网页上的信息。使用爬虫库可以很容易地提取电影的标题、评分、导演、演员等信息。 然后,我们可以使用Python中的数据处理库(例如pandas)来清洗和分析爬取数据。可以对数据进行排序、筛选、去重等操作,以确保数据的准确性和可用性。 接下来,我们可以使用Python中的数据可视化库(例如matplotlib或seaborn)来创建图表和图形,将电影数据可视化。可以用条形图、折线图、散点图等不同的方式来展示数据,使其更加直观和易于理解。 除了电影数据本身,我们还可以将爬取数据与其他来源的数据进行结合,从而得到更有趣和有洞察力的可视化结果。例如,可以将电影评分与票房收入进行对比,或者将电影类型与观众的评分进行关联分析。 最后,我们可以将数据可视化结果导出为图片、PDF或网页,以便与他人共享或在项目中使用。可以选择将可视化结果嵌入到网站或应用程序中,或者将其打印出来以供讨论和展示。 总之,通过使用Python进行电影数据爬取和可视化,我们可以更好地理解电影行业的趋势和特点,并从中获取有价值的信息。同时,这也是一个很好的学习Python编程和数据处理的机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值