BeautifulSoup中的一些问题



  使用wkpdftohtml将爬取到的网页生成PDF时,使用示例代码

import requests
from bs4 import BeautifulSoup
import pdfkit
url = ‘http://www.liaoxuefeng.com/wiki/‘       ‘001434446689867b27157e896e74d51a89c25cc8b43bdb3000‘
response = requests.get(url)
bsObj = BeautifulSoup(response.content, ‘xml‘)
body = bsObj.findAll(class_=‘x-wiki-content‘)
html = str(body)
html = html.encode(‘utf-8‘)
fp = open(‘test.html‘, ‘wb‘)
fp.write(html)
fp.close()
fp = open(‘test.pdf‘, ‘wb‘)
fp.close()
pdfkit.from_file(‘test.html‘, ‘test.pdf‘)

  出现警告

Warning: A finished ResourceObject received a loading progress signal. This might be an indication of an iframe taking too long to load

  并且没有得到预想中的PDF文件。(代码块访问的是廖雪峰的js教程网站)

将beautifulsoup中的解析器换成"lxml"或“html.parser则能够生成预期的PDF文件

  阅读BeautifulSoup的文档

  原因是xml的解析方式将网页中的hr标签补全并使其并入前一个div标签,所以html文件中出现了大量的其他内容?致使生成失败?(目前没学html,所以不是很了解,如有其他好的见解望指正)

  解决办法是将解析器换成‘lxml’,或者‘html.parser’,‘html5lib‘

不过生成的test.PDF不是中文,而我爬取的整个教程是中文,暂时推测是因为测试的内容太少,BeautifulSoup自动检测的时候识别错误,详细请看

Beautifulsoup链接

未完待续



BeautifulSoup中的一些问题

时间: 2024-10-10 22:14:28

BeautifulSoup中的一些问题的相关文章

Python中BeautifulSoup中对HTML标签的提取

一开始使用了beautifulSoup的get_text()进行字符串的提取,后来一直提取失败,并提示错误为TypeError: 'NoneType' object is not callable 返回了none类型,可能是对Span标签内容的提取产生错误,于是采用name.string进行字符的提取,成功. # -*- coding: utf-8 -*- """ Created on Wed Jan 11 17:21:54 2017 @author: PE-Monitor

BeautifulSoup中的select方法

在写css时,标签名不加任何修饰,类名前加点,id名前加 #,我们可以用类似的方法来筛选元素,用到的方法是soup.select(),返回类型是list. (1).通过标签名查找 print(soup.select('title')) # [<title>The Dormouse's story</title>] print(soup.select('a')) # [<a class="sister" href="http://example.c

Python3中BeautifulSoup的使用方法

BeautifulSoup的使用 我们学习了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就不是我们想要的结果了,而且对于一个网页来说,都有一定的特殊的结构和层级关系,而且很多标签都有id或class来对作区分,所以我们借助于它们的结构和属性来提取不也是可以的吗? 所以,这一节我们就介绍一个强大的解析工具,叫做BeautiSoup,它就是借助网页的结构和属性等特性来解析网页的工具,有了它我们不用再去写一些复杂的正则,只需要简单的几条语句就可以完成网页中某个元素的提取. 废话不多说,接下

BeautifulSoup基础

MarkdownPad Document BeautifulSoup findAll函数 nameList = bsObj.findAll("span", {"class":"green"}) for name in namelist:     print(name.get_text()) #找到所有属性class="green"的span标签,通常在你准备打印.存储和操作数据时,应该最后才使 用 .get_text() .一

python模块--BeautifulSoup &lt;HTML/XML文档搜索模块&gt;

之前解析字符串都是上正则,导致后来解析HTML/XML也习惯上正则,可是毕竟正则太底层的东西,对于这种有规律的文档,它不是一个好的选择. 后来发现了HTMLParser,感觉比正则好多了,正想深入学习一下,却发现了这个. BeautifulSoup 一比较然后我把以前代码里面的解析HTML/XML的正则全删了,改成BS来解析,所以在此推荐这个HTML/XML文档解析模块,当然它也可以用来修改文档. BeautifulSoup中文文档 至于示例和详细说明便不说了,文档写得不错,而且还是中文的.

Beautifulsoup关于find的测试

from bs4 import BeautifulSoup import requests url='https://book.douban.com/subject_search?search_text=golang&cat=1001' html=requests.get(url).text # print(html) soup=BeautifulSoup(html,'lxml') booknames=soup.findAll('li',{'class':'subject-item'}) #查找

beautifulsoup小节

在beautifulsoup中,一个tag可能有很多个属性. tag <b class="boldest"> 有一个 “class” 的属性,值为 “boldest” . tag的属性的操作方法与字典相同: 例如我要获取class中的值,可以有tag.get('class')  这样我就能得到class中的值了

BeautifulSoup常用的函数【转】

Example: html文件: html_doc = """ <html><head><title>The Dormouse's story</title></head> <p class="title">The Dormouse's story <p class="story">Once upon a time there were three li

Python抓取网页&amp;批量下载文件方法初探(正则表达式+BeautifulSoup) (转)

Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup) 最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件.对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法. 一.用Python抓取网页 基本方法: [python] view plaincopyprint? import urllib2,urllib url = 'http://www.baidu.com' req