import urllib.request
import re
import time num=input("输入日期(20150101000):") def openpage(url):
html=urllib.request.urlopen(url) page=html.read().decode('gb2312') return page def getpassage(page):
passage = re.findall(r'<p class="MsoNormal" align="left">([\s\S]*)</FONT>',str(page)) passage1=re.sub("</?\w+[^>]*>", "", str(passage)) passage2=passage1.replace('\\r', '\r').replace('\\n', ' \n').replace('\\t','\t').replace(']','').replace('[','').replace('&nbsp;',' ') print(passage2) with open(load,'a',encoding='utf-8') as f:
f.write("-----------------------------"+"日期"+str(date)+"---------------------------------\n"+passage2+"----------------------------------------------------\n") for i in range(1,32):
date=int(num)+int(i)
print(date)
load="C:/Users/home/Desktop/新建文本文档.txt"
url=("http://www.hbuas.edu.cn/news/xyxw/news_"+str(date)+".htm")

  
try: page=openpage(url) getpassage(page) print("第"+str(i)+"号有文章,----已下载")
except:
print("第"+str(i)+"号无文章。")
time.sleep(2)

写了一个爬学校新闻网的爬虫,

主要涉及   re正则   urllib.request   文件的写入

在爬取文章时通常会返回很多影响美感的代码

如下:

优化:

两次正则

passage = re.findall(r'<p align="left">([\s\S]*)</FONT>',str(page))       #第一次匹配字段

passage1=re.sub("</?\w+[^>]*>", "", str(passage))              # 第二次去掉html标签

替换

passage2=passage1.replace('\\r', '\r').replace('\\n', ' \n').replace('\\t','\t').replace(']','').replace('[','').replace('&nbsp;','   ')

效果如下:

over!

python爬虫 ----文章爬虫(合理处理字符串中的\n\t\r........)的更多相关文章

  1. python经典算法题:求字符串中最长的回文子串

    题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

  2. python 实现查找某个字符在字符串中出现次数,并以字典形式输出

    把字符串'aenabsascd'中的字符出现的次数统计出来,并以字典形式输出 方法一: def count_str(str): dic={} for i in str: dic[i]=str.coun ...

  3. python处理dict转json,字符串中存在空格问题,导致url编码时,存在多余字符

    在进行urlencode转换请求的参数时,一直多出一个空格,导致请求参数不正确,多了一个空格,解决方法一种是将dict中key-value键值对的value直接定义为字符串,另一种是value仍然为字 ...

  4. PYTHON 写函数,计算传入字符串中【数字、字母、空格、以及其他的个数】

    def func1(s): al_num = 0 spance_num = 0 digit_num = 0 others_num = 0 for i in s: if i.isdigit(): # i ...

  5. Python:用正则表达式,提取字符串中的所有中文

    import re def clean(line): pattern = re.compile(u'[^\u4e00-\u9fa5]') #中文的范围为\u4e00-\u9fa5 line = re. ...

  6. Linux c字符串中不可打印字符转换成16进制

    本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...

  7. Python基础笔记系列七:字符串定义和访问

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串定义和访问 1.字符串基础 a.字符串可以用单引号.双引号.三引号( ...

  8. 利用Python编写网络爬虫下载文章

    #coding: utf-8 #title..href... str0='blabla<a title="<论电影的七个元素>——关于我对电影的一些看法以及<后会无期 ...

  9. 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...

随机推荐

  1. [math][mathematica] Mathematica进阶

    1. Mathematica 画函数图像 2. Mathematica 解方程 见截图,敲完一行按Shift+Enter就可以执行了.主要函数名都是大小写敏感的.写的正确会跟有提示下拉框和相信说明,非 ...

  2. eclipse debug模式

    eclipse debug模式 1.怎样在Eclipse中设置断点 方法/步骤 1 首先打开工程项目 2 第一种是,把鼠标移动想要设置断点的行,在行号前面空白地方双击,就会出现断点 3 第二种是,在菜 ...

  3. python 随机模块常用命令

    import randomprint(random.random()) #用于生成一个0到1之间的随机浮点数print(random.uniform(1,3))# 用于生成一个指定范围内的随机浮点数p ...

  4. mysql分库 分表

    原文链接:http://www.jianshu.com/p/89311703b320 传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库.分库分库的原因 首先, ...

  5. java 随机抽取案例,不重复抽取

    以学生类为例,先准备一个Student类 package cn.sasa.demo1; public class Student { private int id; private String na ...

  6. 洛谷P3158 放棋子 [CQOI2011] dp+数论

    正解:dp+数论 解题报告: 传送门! 考虑对每种颜色的棋子单独考虑鸭,那显然有,当某一行或某一列已经被占据的时候,那一行/一列就不能再放别的颜色的棋子了,相当于直接把那一行/一列直接消了 显然就能考 ...

  7. CF865D Buy Low Sell High 贪心

    正解:贪心 解题报告: 传送门! 这题首先有个很显然的dp,太基础了不说QAQ 然后考虑dp是n2的,显然过不去,所以换一个角度 然后发现这题和普通的dp的题有什么不同呢?就它这儿是一天只能买一支股, ...

  8. Lua: 给 Redis 用户的入门指导(转)

    add by zhj : Lua与Multi/EXEC的功能比较像,在执行过程中,redis不会执行其它命令,这就不会有并发访问的问题, 这是非常好的.但Multi/EXEC要求所有命令都是独立的,后 ...

  9. shell下的几个命令

    参考博客: https://www.cnblogs.com/-zyj/p/5760484.html 1. 批量删除筛选的文件夹 ls -l | grep ^d | xargs rm -rf   2. ...

  10. linux 查看网卡流量:nload

    nload命令用于查看网卡流量,用法如下: [root@mysql test]# yum install -y epel-release [root@mysql test]# yum install ...