简单小爬虫

背景

在厦门工作许久一直没有机会了解厦门的历史,所以选择在厦门地方志网站上爬取厦门历史典故,包括当地风俗、厦门名字的由来等等信息,搜集工作肯定交给爬虫处理,最后通过 pdfkit 实现网页保存为 PDF 的功能,方便日后慢慢细读。

使用的库

  1. reuqets
  2. lxml
  3. pdfkit

详细代码及注释

import requests
import lxml
from lxml import etree
import pdfkit
#地方志仅有两页,故而不做翻页处理,直接放入列表中迭代
urls = ['http://www.fzb.xm.gov.cn/xmws/', 'http://www.fzb.xm.gov.cn/xmws/index_1.htm?page=2']
#变量保存wkhtmltopdf.exe的路径,不需要设置环境变量了
path_wkhtmltopdf = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'
#设置pdfkit的配置参数,方便后续找到exe文件
config = pdfkit.configuration(wkhtmltopdf=path_wkhtmltopdf)
#将地方志存在的链接进行迭代
for url in urls:
	#网站比较简单,没有做反爬,直接 GET 请求即可
    web_data = requests.get(url)
    #使用etree对网页文件进行解析
    root = etree.HTML(web_data.text)
    #通过//命令获取网页中符合条件的元素
    #元素检索条件为 div 标签, class 属性为 tit_gzdt_c
    #并获得详细标题及 URL 地址
    reconders = root.xpath("//div[@class='tit_gzdt_c']/ul/li/a")
    for reconder in reconders:
        title = reconder.xpath('./text()')[0]
        url = urls[0] + str(reconder.xpath('./@href')[0]).replace(r'./', '')
        print(title, url)
        try:
        	# pdfkit 支持三种方法,分别是 from_url(), from_file(), from_string()
        	# from_url 直接将链接对应网址转为 PDF 文件
        	# from_file 将 HTML 文件转为 PDF 文件
        	# from_string 将字符串转为 PDF 文件
            pdfkit.from_url(url, title+r'.pdf', configuration=config)
        #由于 pdfkit 会报异常错误导致程序无法执行,增加 try 命令跳过异常
        #跳过异常未对文件的写入造成影响
        except BaseException:
            pass


实现效果

保存的 PDF 文件详情
采集到的网页 PDF 文件

遇到的问题

Q1: 如何安装 pdfkit?
A1: 执行命令pip install pdfkit

Q2:安装 pdfkit 后无法使用 from_url() 方法
A2:还需安装 wkhtmltox 软件,下载地址。安装中请记住安装位置,并在程序中手动设置 bin 目录

Q3:程序运行提示OSError: No wkhtmltopdf executable found: "b''"
A3:检查安装路径是否配置正确,默认安装路径为C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe

后记

Ptyhon 自学过程中对学习路线或是程序上遇到问题难以排除,可站内私信我,或是添加 QQ:723831904,互相交流学习,目前自学 Flask 框架中,欢迎同好交流探讨

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值