wordpress电影网站主题,展示型网页开发公司,网站jianshe,做网站有哪些流程欢迎点击右上角关注小编#xff0c;除了分享技术文章之外还有很多福利#xff0c;私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。想要把教程变成PDF有三步#xff1a;1、先生成空html#xff0c;爬取每一篇教程放进一个新生成的div除了分享技术文章之外还有很多福利私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。想要把教程变成PDF有三步1、先生成空html爬取每一篇教程放进一个新生成的div这样就生成了包含所有教程的html文件(BeautifulSoup)2、将html转换成pdf(wkhtmltopdf)3、由于反爬做的比较好在爬取的过程中还需要代理ip(免费 or 付费)开始使用将一段文档传入 BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄.如下所示首先,文档被转换成Unicode,并且HTML的实例都被转换成Unicode编码.然后,Beautiful Soup选择最合适的解析器来解析这段文档,如果手动指定解析器那么Beautiful Soup会选择指定的解析器来解析文档.对象的种类Beautiful Soup 将复杂 HTML 文档转换成一个复杂的树形结构,每个节点都是 Python 对象,所有对象可以归纳为 4 种: Tag , NavigableString , BeautifulSoup , Comment .Tag通俗点讲就是 HTML 中的一个个标签类似 divp。NavigableString获取标签内部的文字如soup.p.string。BeautifulSoup表示一个文档的全部内容。CommentComment 对象是一个特殊类型的 NavigableString 对象其输出的内容不包括注释符号.TagTag就是html中的一个标签用BeautifulSoup就能解析出来Tag的具体内容具体的格式为soup.name,其中name是html下的标签具体实例如下print soup.title输出title标签下的内容包括此标签这个将会输出print soup.head输出head标签下的内容如果 Tag 对象要获取的标签有多个的话它只会返回所以内容中第一个符合要求的标签。Tag 属性每个 Tag 有两个重要的属性 name 和 attrsname对于Tag它的name就是其本身如soup.p.name就是pattrs是一个字典类型的对应的是属性-值如print soup.p.attrs,输出的就是{class: [title], name: dromouse},当然你也可以得到具体的值如print soup.p.attrs[class],输出的就是[title]是一个列表的类型因为一个属性可能对应多个值,当然你也可以通过get方法得到属性的如print soup.p.get(class)。还可以直接使用print soup.p[class]getget方法用于得到标签下的属性值注意这是一个重要的方法在许多场合都能用到比如你要得到标签下的图像url,那么就可以用soup.img.get(src),具体解析如下# 得到第一个p标签下的src属性printsoup.p.get(class)string得到标签下的文本内容只有在此标签下没有子标签或者只有一个子标签的情况下才能返回其中的内容否则返回的是None具体实例如下# 在上面的一段文本中p标签没有子标签因此能够正确返回文本的内容printsoup.p.string# 这里得到的就是None,因为这里的html中有很多的子标签printsoup.html.stringget_text()可以获得一个标签中的所有文本内容包括子孙节点的内容这是最常用的方法。搜索文档树BeautifulSoup 主要用来遍历子节点及子节点的属性通过Tag取属性的方式只能获得当前文档中的第一个 tag例如soup.p。如果想要得到所有的 标签,或是通过名字得到比一个 tag 更多的内容的时候,就需要用到 find_all()find_all(name, attrs, recursive, text, **kwargs )find_all是用于搜索节点中所有符合过滤条件的节点。name参数是Tag的名字如p,div,title# 1. 节点名print(soup.find_all(p))# 2. 正则表达式print(soup.find_all(re.compile(^p)))# 3. 列表 print(soup.find_all([p,a]))另外 attrs 参数可以也作为过滤条件来获取内容而 limit 参数是限制返回的条数。CSS 选择器以 CSS 语法为匹配标准找到 Tag。同样也是使用到一个函数该函数为select()返回类型是 list。它的具体用法如下# 1. 通过 tag 标签查找print(soup.select(head))# 2. 通过 id 查找print(soup.select(#link1))# 3. 通过 class 查找print(soup.select(.sister))# 4. 通过属性查找print(soup.select(p[namedromouse]))# 5. 组合查找print(soup.select(body p))wkhtmltopdfwkhtmltopdf主要用于HTML生成PDF。pdfkit是基于wkhtmltopdf的python封装支持URL本地文件文本内容到PDF的转换其最终还是调用wkhtmltopdf命令。安装先安装wkhtmltopdf再安装pdfkit。https://wkhtmltopdf.org/downloads.htmlpdfkitshell pip3 install pdfkit转换url/file/stringimportpdfkitpdfkit.from_url(http://google.com,out.pdf)pdfkit.from_file(index.html,out.pdf)pdfkit.from_string(Hello!,out.pdf)转换url或者文件名列表pdfkit.from_url([google.com,baidu.com],out.pdf)pdfkit.from_file([file1.html,file2.html],out.pdf)转换打开文件withopen(file.html)asf: pdfkit.from_file(f,out.pdf)自定义设置使用代理ip爬取十几篇教程之后触发了这个错误看来廖大的反爬虫做的很好于是只好使用代理ip了尝试了免费的西刺免费代理后最后选择了付费的 阿布云 感觉响应速度和稳定性还OK。运行结果运行过程截图运行过程生成的效果图效果图代码如下