学了下beautifulsoup后,做个个网络爬虫,爬取读者杂志并用reportlab制作成pdf..

crawler.py

#!/usr/bin/env python

#coding=utf-8

"""

Author: Anemone

Filename: getmain.py

Last modified: 2015-02-19 16:47

E-mail: [email protected]

"""

import urllib2

from bs4 import BeautifulSoup

import re

import sys

reload(sys)

sys.setdefaultencoding(‘utf-8‘)

def getEachArticle(url):

# response = urllib2.urlopen(‘http://www.52duzhe.com/2015_01/duzh20150104.html‘)

response = urllib2.urlopen(url)

html = response.read()

soup = BeautifulSoup(html)#.decode("utf-8").encode("gbk"))

#for i in soup.find_all(‘div‘):

# print i,1

title=soup.find("h1").string

writer=soup.find(id="pub_date").string.strip()

_from=soup.find(id="media_name").string.strip()

text=soup.get_text()#.encode("utf-8")

main=re.split("BAIDU_CLB.*;",text)

result={"title":title,"writer":writer,"from":_from,"context":main[1]}

return result

#new=open("new.txt","w")

#new.write(result["title"]+"\n\n")

#new.write(result["writer"]+" "+result["from"])

#new.write(result["context"])

#new.close()

def getCatalog(issue):

url="http://www.52duzhe.com/"+issue[:4]+"_"+issue[-2:]+"/"

firstUrl=url+"duzh"+issue+"01.html"

firstUrl=url+"index.html"

duzhe=dict()

response = urllib2.urlopen(firstUrl)

html = response.read()

soup=BeautifulSoup(html)

firstUrl=url+soup.table.a.get("href")

response = urllib2.urlopen(firstUrl)

html = response.read()

soup = BeautifulSoup(html)

all=soup.find_all("h2")

for i in all:

print i.string

duzhe[i.string]=list()

for link in i.parent.find_all("a"):

href=url+link.get("href")

print href

while 1:

try:

article=getEachArticle(href)

break

except:

continue

duzhe[i.string].append(article)

return duzhe

def readDuZhe(duzhe):

for eachColumn in duzhe:

for eachArticle in duzhe[eachColumn]:

print eachArticle["title"]

if __name__ == ‘__main__‘:

# issue=raw_input("issue(201501):")

readDuZhe(getCatalog("201424"))

getpdf.py

#!/usr/bin/env python

#coding=utf-8

"""

Author: Anemone

Filename: writetopdf.py

Last modified: 2015-02-20 19:19

E-mail: [email protected]

"""

#coding=utf-8

import reportlab.rl_config

from reportlab.pdfbase import pdfmetrics

from reportlab.pdfbase.ttfonts import TTFont

from reportlab.lib import fonts

import copy

from reportlab.platypus import Paragraph, SimpleDocTemplate,flowables

from reportlab.lib.styles import getSampleStyleSheet

import crawler

def writePDF(issue,duzhe):

reportlab.rl_config.warnOnMissingFontGlyphs = 0

pdfmetrics.registerFont(TTFont(‘song‘,"simsun.ttc"))

pdfmetrics.registerFont(TTFont(‘hei‘,"msyh.ttc"))

fonts.addMapping(‘song‘, 0, 0, ‘song‘)

fonts.addMapping(‘song‘, 0, 1, ‘song‘)

fonts.addMapping(‘song‘, 1, 0, ‘hei‘)

fonts.addMapping(‘song‘, 1, 1, ‘hei‘)

stylesheet=getSampleStyleSheet()

normalStyle = copy.deepcopy(stylesheet[‘Normal‘])

normalStyle.fontName =‘song‘

normalStyle.fontSize = 11

normalStyle.leading = 11

normalStyle.firstLineIndent = 20

titleStyle = copy.deepcopy(stylesheet[‘Normal‘])

titleStyle.fontName =‘song‘

titleStyle.fontSize = 15

titleStyle.leading = 20

firstTitleStyle = copy.deepcopy(stylesheet[‘Normal‘])

firstTitleStyle.fontName =‘song‘

firstTitleStyle.fontSize = 20

firstTitleStyle.leading = 20

firstTitleStyle.firstLineIndent = 50

smallStyle = copy.deepcopy(stylesheet[‘Normal‘])

smallStyle.fontName =‘song‘

smallStyle.fontSize = 8

smallStyle.leading = 8

story = []

story.append(Paragraph("读者{0}期".format(issue), firstTitleStyle))

for eachColumn in duzhe:

story.append(Paragraph(‘__‘*28, titleStyle))

story.append(Paragraph(‘{0}‘.format(eachColumn), titleStyle))

for eachArticle in duzhe[eachColumn]:

story.append(Paragraph(eachArticle["title"],normalStyle))

story.append(flowables.PageBreak())

for eachColumn in duzhe:

for eachArticle in duzhe[eachColumn]:

story.append(Paragraph("{0}".format(eachArticle["title"]),titleStyle))

story.append(Paragraph(" {0} {1}".format(eachArticle["writer"],eachArticle["from"]),smallStyle))

para=eachArticle["context"].split("  ")

for eachPara in para:

story.append(Paragraph(eachPara,normalStyle))

story.append(flowables.PageBreak())

#story.append(Paragraph("context",normalStyle))

doc = SimpleDocTemplate("duzhe"+issue+".pdf")

print "Writing PDF..."

doc.build(story)

def main(issue):

duzhe=crawler.getCatalog(issue)

writePDF(issue,duzhe)

if __name__ == ‘__main__‘:

issue=raw_input("Enter issue(201501):")

main(issue)

以上就是本文的全部内容了,希望大家能够喜欢。

原文:http://www.jb51.net/article/61975.htm

python爬取pdf内容_Python爬取读者并制作成PDF相关推荐

  1. python爬pdf的曲线_Python爬取读者并制作成PDF

    学了下beautifulsoup后,做个个网络爬虫,爬取读者杂志并用reportlab制作成pdf.. crawler.py #!/usr/bin/env python #coding=utf-8 & ...

  2. python搜索网页特定区域内容_Python爬取练习:指定百度搜索的内容并提取网页的标题内容...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章源于白菜学python ,作者小白菜 刚接触Python的新手.小白,可以复制下面的链接去 ...

  3. python提取txt关键内容_python爬取关键字所在行并输出到txt

    因为手中有几千条关键信息需要整理,所有的信息都规整的用txt保存,但是我只需要其中有关键字后面的value值,怎么搞呢?几千条信息手动肯定是不可能的,然后刚刚学习python,很神奇的语言,哈哈.试着 ...

  4. 爬取知识星球,并制作成 PDF 电子书

    GitHub 地址:github.com/96chh/crawl- 功能 爬取知识星球的精华区,并制作成 PDF 电子书. 效果图 用法 if __name__ == '__main__':start ...

  5. PHP PDF内容识别 抓取信息 方法

    PHP PDF内容识别 抓取信息 方法 PDF Parser 使用 PDF Parser 参考:http://www.pdfparser.org/ (注意:composer.json 更新 pdfpa ...

  6. python爬取新浪微博内容_python新浪微博爬虫,爬取微博和用户信息 (含源码及示例)...

    [实例简介] 这是新浪微博爬虫,采用python+selenium实现. 免费资源,希望对你有所帮助,虽然是傻瓜式爬虫,但是至少能运行.同时rar中包括源码及爬取的示例. 参考我的文章: http:/ ...

  7. python爬取网页新闻_Python爬取新闻网数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 基本开发环境 Pyth ...

  8. python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!

    前言 大家好 ​ 最近python爬虫有点火啊,啥python爬取马保国视频--我也来凑个热闹,今天我们来试着做个翻译软件--不是不是,说错了,今天我们来试着提交翻译内容并爬取翻译结果 主要内容 PS ...

  9. python爬取百度标题_Python爬取百度热搜和数据处理

    一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取百度热搜 2.主题式网络爬虫爬取的内容与数据特征分析:百度热搜排行,标题,热度 3.主题式网络爬虫设计方案概述:先搜索网站,查找数据并比对然后再 ...

最新文章

  1. python学习(一)-----数据结构和算法----序列和字典的基本用法
  2. 详细的线程池讲解,手写C与C++版本
  3. Java根据文件头文件信息判断文件类型
  4. mac os 开启redis_mac os 命令行安装 启动和停止 redis
  5. 正则表达式: 正向预查和负向预查
  6. 华硕计算机用户名默认,华硕路由器后台默认网址是多少
  7. C#UDP通讯UdpClient
  8. 写出完美CSS代码的5个重要方面
  9. VC++ 使用CreateProcess创建新进程
  10. 用户变量和系统变量的区别_环境变量的用户变量与系统变量的区别
  11. decode函数_「实践」云函数 + API,你也可以做个天气信息系统
  12. pdo 连接操作数据库
  13. 源码部署Apache和shell脚本安装
  14. 力扣-811 子域名访问计数
  15. Android基础(三) 数据库SQLite
  16. C++ IE缓存管理研究
  17. 初中中考计算机考试,中考信息技术考试
  18. WEBOS——第一次感觉云计算离我们如此之今
  19. Go微服务架构实战 中篇:6. 微服务治理策略
  20. HNU-计算机系统-讨论课5

热门文章

  1. 轻松上云系列之一:本地数据迁移上云
  2. 初探系列 — Pharbers用于单点登录的权限架构
  3. HDU 6156 Palindrome Function 数位DP
  4. PHP面试中常见的字符串与文件操作题目
  5. MySQL必知必会教程:深入理解MySQL技术内幕
  6. 观感人故事《我们俩》
  7. Ajax Toolkit日历控件CalendarExtender求教!
  8. php获取excel时间,详细介绍PHPExcel读取Excel时间的示例代码
  9. django前端引用数据_「基于Python技术的智慧中医商业项目」Django前端网站篇-5.资讯的数据交互...
  10. 深度强化学习_深度学习理论与应用第8课 | 深度强化学习