学了下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: anemone@82flex.com """ 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: anemone@82flex.com """ #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("<b>读者{0}期</b>".format(issue), firstTitleStyle)) for eachColumn in duzhe: story.append(Paragraph('__'*28, titleStyle)) story.append(Paragraph('<b>{0}</b>'.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("<b>{0}</b>".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)
以上就是本文的全部内容了,希望大家能够喜欢。
本文向大家介绍Python制作爬虫抓取美女图,包括了Python制作爬虫抓取美女图的使用技巧和注意事项,需要的朋友参考一下 作为一个新世纪有思想有文化有道德时刻准备着的屌丝男青年,在现在这样一个社会中,心疼我大慢播抵制大百度的前提下,没事儿上上网逛逛YY看看斗鱼翻翻美女图片那是必不可少的,可是美图虽多翻页费劲!今天我们就搞个爬虫把美图都给扒下来!本次实例有2个:煎蛋上的妹子图,某网站的rosi
本文向大家介绍python制作爬虫并将抓取结果保存到excel中,包括了python制作爬虫并将抓取结果保存到excel中的使用技巧和注意事项,需要的朋友参考一下 学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫。 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候,搜索Python,或者是PHP等等
本文向大家介绍python制作爬虫爬取京东商品评论教程,包括了python制作爬虫爬取京东商品评论教程的使用技巧和注意事项,需要的朋友参考一下 本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化。下面是要抓取的商品信息,一款女士文胸。这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论。 京东商品评论
本文向大家介绍用Python爬取QQ音乐评论并制成词云图的实例,包括了用Python爬取QQ音乐评论并制成词云图的实例的使用技巧和注意事项,需要的朋友参考一下 环境:Ubuntu16.4 python版本:3.6.4 库:wordcloud 这次我们要讲的是爬取QQ音乐的评论并制成云词图,我们这里拿周杰伦的等你下课来举例。 第一步:获取评论 我们先打开QQ音乐,搜索周杰伦的《等你下课》,直接拉到底
本文向大家介绍Python爬虫爬取杭州24时温度并展示操作示例,包括了Python爬虫爬取杭州24时温度并展示操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python爬虫爬取杭州24时温度并展示操作。分享给大家供大家参考,具体如下: 散点图 爬虫杭州今日24时温度 https://www.baidutianqi.com/today/58457.htm 利用正则表达式爬取杭州温度
本文向大家介绍使用requests库制作Python爬虫,包括了使用requests库制作Python爬虫的使用技巧和注意事项,需要的朋友参考一下 使用python爬虫其实就是方便,它会有各种工具类供你来使用,很方便。Java不可以吗?也可以,使用httpclient工具、还有一个大神写的webmagic框架,这些都可以实现爬虫,只不过python集成工具库,使用几行爬取,而Java需要写更多的行