python爬虫 ----文章爬虫(合理处理字符串中的\n\t\r........)
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(' ',' ') 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(' ',' ') 效果如下:
over!
python爬虫 ----文章爬虫(合理处理字符串中的\n\t\r........)的更多相关文章
- python经典算法题:求字符串中最长的回文子串
题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...
- python 实现查找某个字符在字符串中出现次数,并以字典形式输出
把字符串'aenabsascd'中的字符出现的次数统计出来,并以字典形式输出 方法一: def count_str(str): dic={} for i in str: dic[i]=str.coun ...
- python处理dict转json,字符串中存在空格问题,导致url编码时,存在多余字符
在进行urlencode转换请求的参数时,一直多出一个空格,导致请求参数不正确,多了一个空格,解决方法一种是将dict中key-value键值对的value直接定义为字符串,另一种是value仍然为字 ...
- PYTHON 写函数,计算传入字符串中【数字、字母、空格、以及其他的个数】
def func1(s): al_num = 0 spance_num = 0 digit_num = 0 others_num = 0 for i in s: if i.isdigit(): # i ...
- Python:用正则表达式,提取字符串中的所有中文
import re def clean(line): pattern = re.compile(u'[^\u4e00-\u9fa5]') #中文的范围为\u4e00-\u9fa5 line = re. ...
- Linux c字符串中不可打印字符转换成16进制
本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...
- Python基础笔记系列七:字符串定义和访问
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串定义和访问 1.字符串基础 a.字符串可以用单引号.双引号.三引号( ...
- 利用Python编写网络爬虫下载文章
#coding: utf-8 #title..href... str0='blabla<a title="<论电影的七个元素>——关于我对电影的一些看法以及<后会无期 ...
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...
随机推荐
- [yum] yum使用光盘安装或更新软件
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_ ...
- scrollView截取指定区域的图片
把scrollView放到一个容器里面,再截图就可以了 scrollview放到容器: UIView *lunboCarrier = [[UIView alloc] initWithFrame:CGR ...
- 图->定义
文字描述 顶点 指图中的数据元素 弧尾 若<v,w>属于两个顶点之间的关系的集合,表示从v到w的一条弧,则v为弧尾或初始点 弧头 若<v,w>属于两个顶点之间的关系的集合,表 ...
- 哨兵模式下,master选举关键点
哨兵模式下的选举策略: 1:slave priority越低 ,优先级越高 2:1同等情况下,slave复制的数据越多优先级越高 3:2相同的条件下run id越小越容易被选举
- qt设计器中使用自定义控件
当qt设计器中的控件不能满足需要时,这时就要自定义控件.然后再在qt设计器中使用. 在qt设计器中使用自定义控件时,可以用提升. 从控件派生出新的类: 然后在qt设计器中右键需要提升的控件: 填入提升 ...
- oracle常见的执行计划
访问表的执行计划: 全表扫描:TABLE ACCESS FULL ROWID扫描:TABLE ACCESS BY USER ROWID (ROWID来源于用户在where条件中的指定)或 TABLE ...
- ASCLL码中的一些小知识
其次要记住asill值中 65是A 97是a A与a之间相隔32,用int转换后再用char转换回来. char b = s.charAt(i);为字符串转换成一个一个的.
- (1.8)mysql中的trace
(1.8)mysql中的trace 以json格式存储
- 6种innodb数据字典恢复方法
6种innodb数据字典恢复方法 https://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html frm文件重 ...
- distpicker省市区插件初始化选中值的问题
$('#distpicker1').distpicker('destroy') //当需要重新生成的时候,需要先销毁 $('#distpicker1').distpicker({ province: ...