Python通過(guò)解析網(wǎng)頁(yè)實(shí)現(xiàn)看報(bào)程序的方法
本文所述實(shí)例可以實(shí)現(xiàn)基于Python的查看圖片報(bào)紙《參考消息》并將當(dāng)天的圖片報(bào)紙自動(dòng)下載到本地供查看的功能,具體實(shí)現(xiàn)代碼如下:
# 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
print
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
print
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
print
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("頁(yè)")
page_num = tmp_str[2:end_s]
print page_num
page_count = int(page_num)
print "Total " + page_num + " pages:"
print
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!"
print
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!"
- Python實(shí)現(xiàn)遠(yuǎn)程調(diào)用MetaSploit的方法
- 用python寫(xiě)asp詳細(xì)講解
- 使用Python開(kāi)發(fā)windows GUI程序入門(mén)實(shí)例
- 手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享
- python實(shí)現(xiàn)根據(jù)圖標(biāo)提取分類(lèi)應(yīng)用程序?qū)嵗?/a>
- python+mysql實(shí)現(xiàn)簡(jiǎn)單的web程序
- 一個(gè)超級(jí)簡(jiǎn)單的python web程序
- python3編寫(xiě)C/S網(wǎng)絡(luò)程序?qū)嵗坛?/a>
- python實(shí)現(xiàn)的重啟關(guān)機(jī)程序?qū)嵗?/a>
- Python程序員開(kāi)發(fā)中常犯的10個(gè)錯(cuò)誤
- 用python實(shí)現(xiàn)面向?qū)ο竦腁SP程序?qū)嵗?/a>
相關(guān)文章
Python實(shí)現(xiàn)發(fā)送警告通知到企業(yè)微信方法詳解
常見(jiàn)的報(bào)警方式有:郵件,電話,短信,微信。本文將介紹如何利用Python發(fā)送警告通知到企業(yè)微信,文中的示例代碼有一定的參考價(jià)值,感興趣的可以了解一下2022-01-01
python目標(biāo)檢測(cè)實(shí)現(xiàn)黑花屏分類(lèi)任務(wù)示例
這篇文章主要為大家介紹了python目標(biāo)檢測(cè)實(shí)現(xiàn)黑花屏分類(lèi)任務(wù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
django 微信網(wǎng)頁(yè)授權(quán)登陸的實(shí)現(xiàn)
這篇文章主要介紹了django 微信網(wǎng)頁(yè)授權(quán)登陸的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python編寫(xiě)Windows Service服務(wù)程序
這篇文章主要為大家詳細(xì)介紹了Python編寫(xiě)Windows Service服務(wù)程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Windows下Python2與Python3兩個(gè)版本共存的方法詳解
這篇文章主要介紹了Windows下Python2與Python3兩個(gè)版本共存的方法,文中介紹的很詳細(xì),對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-02-02
python的pandas工具包,保存.csv文件時(shí)不要表頭的實(shí)例
今天小編小編就為大家分享一篇python的pandas工具包,保存.csv文件時(shí)不要表頭的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python實(shí)現(xiàn)pdf轉(zhuǎn)word詳細(xì)代碼
在日常工作中,我們經(jīng)常會(huì)遇到需要將PDF文件轉(zhuǎn)換成Word文件的需求。雖然市面上有許多PDF轉(zhuǎn)Word的工具,但是它們通常需要付費(fèi)或者有轉(zhuǎn)換后的格式問(wèn)題,這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)pdf轉(zhuǎn)word的相關(guān)資料,需要的朋友可以參考下2023-09-09

