Python通过解析网页实现看报程序的方法
作者:shichen2014 发布时间:2022-07-16 14:27:12
标签:Python,解析,网页,方法
本文所述实例可以实现基于Python的查看图片报纸《参考消息》并将当天的图片报纸自动下载到本地供查看的功能,具体实现代码如下:
# coding=gbk
import urllib2
import socket
import re
import time
import os
# timeout in seconds
#timeout = 10
#socket.setdefaulttimeout(timeout)
timeout = 10
urllib2.socket.setdefaulttimeout(timeout)
home_url = "http://www.hqck.net"
home_page = ""
try:
home_page_context = urllib2.urlopen(home_url)
home_page = home_page_context.read()
print "Read home page finishd."
print "-------------------------------------------------"
except urllib2.URLError,e:
print e.code
exit()
except:
print e.code
exit()
reg_str = r'<a class="item-baozhi" href="/arc/jwbt/ckxx/\d{4}/\d{4}/\w+\.html" rel="external nofollow" ><span class.+>.+</span></a>'
news_url_reg = re.compile(reg_str)
today_cankao_news = news_url_reg.findall(home_page)
if len(today_cankao_news) == 0:
print "Cannot find today's news!"
exit()
my_news = today_cankao_news[0]
print "Latest news link = " + my_news
url_s = my_news.find("/arc/")
url_e = my_news.find(".html")
url_e = url_e + 5
print "Link index = [" + str(url_s) + "," + str(url_e) + "]"
my_news = my_news[url_s:url_e]
print "part url = " + my_news
full_news_url = home_url + my_news
print "full url = " + full_news_url
image_folder = "E:\\new_folder\\"
if (os.path.exists(image_folder) == False):
os.makedirs(image_folder)
today_num = time.strftime('%Y-%m-%d',time.localtime(time.time()))
image_folder = image_folder + today_num + "\\"
if (os.path.exists(image_folder) == False):
os.makedirs(image_folder)
print "News image folder = " + image_folder
context_uri = full_news_url[0:-5]
first_page_url = context_uri + ".html"
try:
first_page_context = urllib2.urlopen(first_page_url)
first_page = first_page_context.read()
except urllib2.HTTPError, e:
print e.code
exit()
tot_page_index = first_page.find("共")
tot_page_index = tot_page_index
tmp_str = first_page[tot_page_index:tot_page_index+10]
end_s = tmp_str.find("页")
page_num = tmp_str[2:end_s]
print page_num
page_count = int(page_num)
print "Total " + page_num + " pages:"
page_index = 1
download_suc = True
while page_index <= page_count:
page_url = context_uri
if page_index > 1:
page_url = page_url + "_" + str(page_index)
page_url = page_url + ".html"
print "News page link = " + page_url
try:
news_img_page_context = urllib2.urlopen(page_url)
except urllib2.URLError,e:
print e.reason
download_suc = False
break
news_img_page = news_img_page_context.read()
#f = open("e:\\page.html", "w")
#f.write(news_img_page)
#f.close()
reg_str = r'http://image\S+jpg'
image_reg = re.compile(reg_str)
image_results = image_reg.findall(news_img_page)
if len(image_results) == 0:
print "Cannot find news page" + str(page_index) + "!"
download_suc = False
break
image_url = image_results[0]
print "News image url = " + image_url
news_image_context = urllib2.urlopen(image_url)
image_name = image_folder + "page_" + str(page_index) + ".jpg"
imgf = open(image_name, 'wb')
print "Getting image..."
try:
while True:
date = news_image_context.read(1024*10)
if not date:
break
imgf.write(date)
imgf.close()
except:
download_suc = False
print "Save image " + str(page_index) + " failed!"
print "Unexpected error: " + sys.exc_info()[0] + sys.exc_info()[1]
else:
print "Save image " + str(page_index) + " succeed!"
page_index = page_index + 1
if download_suc == True:
print "News download succeed! Path = \"" + str(image_folder) + "\""
print "Enjoy it! ^^"
else:
print "news download failed!"


猜你喜欢
- 粉丝提问今天粉丝提了下面这样一个问题,其中一个是"一行拆多行",另外一个是"多行并一行",貌似群友用
- scrapy 框架结构思考scrapy 为什么是框架而不是库?scrapy是如何工作的?项目结构在开始爬取之前,必须创建一个新的Scrapy
- MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发。可是数据量到了
- Dmitry这篇设计评论表单很有启发意义,尤其提到关键的评论内容、评论者信息录入顺序问题。好比我们在日常沟通时,对信息的反馈都是第一诉求,写
- 最近换了家新公司,由于是创业公司,项目基本从零开始搭建。工作几年,也没想过写点什么技术性的东西,今天突然心血来潮,哦当然,我这个人总是特别容
- 本文实例讲述了python实现根据窗口标题调用窗口的方法。分享给大家供大家参考。具体分析如下:当你知道一个windows窗口的标题后,可以用
- 前言写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有4种:图像类滑动类点击类语音类今天先来看看图像类,这类验证码大多是数字、字母的
- 依赖环境本篇文章所依赖的python 环境如下:计算机网络应用体系结构,一般有以下几种:C/S架构: 也称为客户端/客户端架构。P2P架构:
- python 的虚拟环境可以为一个 python 项目提供独立的解释环境、依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本
- About最近在学习vue的过程中,仿照去哪儿网的移动端写了个小项目,旨在实践和巩固基础知识,但是今天发现去哪儿的首页上有一个组件用户体验较
- Python3还是没有switch,可以利用if-else来实现,但是非常不方便。使用dict来实现会比较简洁优雅。# -*- coding
- 一般在卸载完数据库时,大家都希望能够将注册表信息完全删干净,下面就将教您彻底删除SQL Server注册表的方法,供您参考。在卸载SQL S
- 目录01 — Pytest核心功能02 — 创建测试项目03 — 编写测试用例04 — 执行测试用例05 — 数据与脚本分离06 — 参数化
- 本文实例讲述了Python实现队列的方法。分享给大家供大家参考,具体如下:Python实现队列队列(FIFO),添加元素在队列尾,删除元素在
- 1、引言小丝:鱼哥,2023年了, 你有啥愿望啊?小鱼:这, 我可以选择不告诉你吗?小丝:可以选择不告诉我,但是,你自己憋着,不难受吗?小鱼
- 同样是做表格,但是有些人的表格就做的很好看。融合了之前所学不同模块的知识,来讲讲Django中生成表格的特殊方法。这里只是mark一下导出的
- HTTP_X_FORWARDED_FOR与REMOTE_ADDR的区别.在Request.ServerVariables中并没有HTTP_X
- 年前帮manager 招GUI设计实习生 (PS. 这个实习生职位依然open,欢迎有兴趣的同学来投,邮箱jj.ying [at] hp.c
- 百度指数抓取,再用图像识别得到指数前言:土福曾说,百度指数很难抓,在淘宝上面是20块1个关键字:哥那么叼的人怎么会被他吓到,于是乎花了零零碎
- 虚拟环境的搭建为什么要使用虚拟环境#1、使不同应用开发环境相互独立2、环境升级不影响其他应用,也不会影响全局的python环境3、防止出现包