beautifulsoup解析页面
from bs4 import BeautifulSoup soup = BeautifulSoup(htmltxt, "lxml") # 三种装载器 soup = BeautifulSoup("<a></p>", "html.parser") ### 只有起始标签的会自动补全,只有结束标签的会自动忽略 ### 结果为:<a></a> soup = BeautifulSoup("<a></p>", "lxml") ### 结果为:<html><body><a></a></body></html> soup = BeautifulSoup("<a></p>", "html5lib") ### html5lib则出现一般的标签都会自动补全 ### 结果为:<html><head></head><body><a><p></p></a></body></html> # 根据标签名、id、class、属性等查找标签 ### 根据class、id、以及属性alog-action的值和标签类别查询 soup.find("a",class_="title",id="t1",attrs={"alog-action": "qb-ask-uname"})) ### 查询标签内某属性的值 pubtime = soup.find("meta",attrs={"itemprop":"datePublished"}).attrs['content'] ### 获取所有class为title的标签 for i in soup.find_all(class_="title"): print(i.get_text()) ### 获取特定数量的class为title的标签 for i in soup.find_all(class_="title",limit = 2): print(i.get_text()) ### 获取文本内容时可以指定不同标签之间的分隔符,也可以选择是否去掉前后的空白。 soup = BeautifulSoup('<p class="title" id="p1"><b> The Dormouses story </b></p><p class="title" id="p1"><b>The Dormouses story</b></p>', "html5lib") soup.find(class_="title").get_text("|", strip=True) #结果为:The Dormouses story|The Dormouses story ### 获取class为title的p标签的id soup.find(class_="title").get("id") ### 对class名称正则: soup.find_all(class_=re.compile("tit")) ### recursive参数,recursive=False时,只find当前标签的第一级子标签的数据 soup = BeautifulSoup('<html><head><title>abc','lxml') soup.html.find_all("title", recursive=False)
unicode编码转中文
content = "\u65f6\u75c7\u5b85" content = content.encode("utf8","ignore").decode('unicode_escape')
url encode的解码与解码
from urllib import parse # 编码 x = "中国你好" y = parse.quote(x) print(y) # 解码 x = parse.unquote(y) print(x)
html转义字符的解码
from html.parser import HTMLParser htmls = "<div><p>" txt = HTMLParser().unescape(htmls) print(txt) . # 输出<div><p>
base64的编码与解码
import base64 # 编码 content = "测试转码文本123" contents_base64 = base64.b64encode(content.encode('utf-8','ignore')).decode("utf-8") # 解码 contents = base64.b64decode(contents_base64)
过滤emoji表情
def filter_emoji(desstr,restr=''): try: co = re.compile(u'[\U00010000-\U0010ffff]') except re.error: co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]') return co.sub(restr, desstr)
完全过滤script和style标签
import requests from bs4 import BeautifulSoup soup = BeautifulSoup(htmls, "lxml") for script in soup(["script", "style"]): script.extract() print(soup)
过滤html的标签,但保留标签里的内容
import re htmls = "<p>abc</p>" dr = re.compile(r'<[^>]+>',re.S) htmls2 = dr.sub('',htmls) print(htmls2) #abc 正则提取内容(一般处理json) rollback({ "response": { "code": "0", "msg": "Success", "dext": "" }, "data": { "count": 3, "page": 1, "article_info": [{ "title": "“小库里”:适应比赛是首要任务 投篮终会找到节奏", "url": "http:\/\/sports.qq.com\/a\/20180704\/035378.htm", "time": "2018-07-04 16:58:36", "column": "NBA", "img": "", "desc": "" }, { "title": "首钢体育助力国家冰球集训队 中国冰球联赛年底启动", "url": "http:\/\/sports.qq.com\/a\/20180704\/034698.htm", "time": "2018-07-04 16:34:44", "column": "综合体育", "img": "", "desc": "" }...] } }) import re # 提取这个json中的每条新闻的title、url # (.*?)为要提取的内容,可以在正则字符串中加入.*?表示中间省略若干字符 reg_str = r'"title":"(.*?)",.*?"url":"(.*?)"' pattern = re.compile(reg_str,re.DOTALL) items = re.findall(pattern,htmls) for i in items: tilte = i[0] url = i[1]
时间操作
# 获取当前日期 today = datetime.date.today() print(today) #2018-07-05 # 获取当前时间并格式化 time_now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) print(time_now) #2018-07-05 14:20:55 # 对时间戳格式化 a = 1502691655 time_a = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(a))) print(time_a) #2017-08-14 14:20:55 # 字符串转为datetime类型 str = "2018-07-01 00:00:00" datetime.datetime.strptime(st, "%Y-%m-%d %H:%M:%S") # 将时间转化为时间戳 time_line = "2018-07-16 10:38:50" time_tuple = time.strptime(time_line, "%Y-%m-%d %H:%M:%S") time_line2 = int(time.mktime(time_tuple)) # 明天的日期 today = datetime.date.today() tomorrow = today + datetime.timedelta(days=1) print(tomorrow) #2018-07-06 # 三天前的时间 today = datetime.datetime.today() tomorrow = today + datetime.timedelta(days=-3) print(tomorrow) #2018-07-02 13:37:00.107703 # 计算时间差 start = "2018-07-03 00:00:00" time_now = datetime.datetime.now() b = datetime.datetime.strptime(start,'%Y-%m-%d %H:%M:%S') minutes = (time_now-b).seconds/60 days = (time_now-b).days all_minutes = days*24*60+minutes print(minutes) #821.7666666666667 print(days) #2 print(all_minutes) #3701.7666666666664
数据库操作
import pymysql conn = pymysql.connect(host='10.0.8.81', port=3306, user='root', passwd='root',db='xxx', charset='utf8') cur = conn.cursor() insert_sql = "insert into tbl_name(id,name,age) values(%s,%s,%s) id = 1 name = "like" age = 26 data_list = [] data = (id,name,age) # 单条插入 cur.execute(insert_sql,data) conn.commit() # 批量插入 data_list.append(data) cur.executemany(insert_sql,data_list) conn.commit() #特殊字符处理(name中含有特殊字符) data = (id,pymysql.escape_string(name),age) #更新 update_sql = "update tbl_name set content = '%s' where id = "+str(id) cur.execute(update_sql%(pymysql.escape_string(content))) conn.commit() #批量更新 update_sql = "UPDATE tbl_recieve SET content = %s ,title = %s , is_spider = %s WHERE id = %s" update_data = (contents,title,is_spider,one_new[0]) update_data_list.append(update_data) if len(update_data_list) > 500: try: cur.executemany(update_sql,update_data_list) conn.commit()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接
python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码识别脚本。 爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情。
本文向大家介绍python scrapy爬虫代码及填坑,包括了python scrapy爬虫代码及填坑的使用技巧和注意事项,需要的朋友参考一下 涉及到详情页爬取 目录结构: kaoshi_bqg.py xmly.py item.py pipelines.py starts.py 然后是爬取到的数据 小说 xmly.json 记录一下爬取过程中遇到的一点点问题: 在爬取详情页的的时候, 刚开始不知道
本文向大家介绍python爬虫爬取图片的简单代码,包括了python爬虫爬取图片的简单代码的使用技巧和注意事项,需要的朋友参考一下 Python是很好的爬虫工具不用再说了,它可以满足我们爬取网络内容的需求,那最简单的爬取网络上的图片,可以通过很简单的方法实现。只需导入正则表达式模块,并利用spider原理通过使用定义函数的方法可以轻松的实现爬取图片的需求。 1、spider原理 spider就是定
本文向大家介绍Python使用爬虫猜密码,包括了Python使用爬虫猜密码的使用技巧和注意事项,需要的朋友参考一下 我们可以通过python 来实现这样一个简单的爬虫猜密码功能。下面就看看如何使用python来实现这样一个功能。 这里我们知道用户的昵称为:heibanke 密码是30以内的一个数字,要使用requests库循环提交来猜密码 主要需要用到的库是requests库 安装requests
本文向大家介绍nodeJs爬虫的技术点总结,包括了nodeJs爬虫的技术点总结的使用技巧和注意事项,需要的朋友参考一下 背景 最近打算把之前看过的nodeJs相关的内容在复习下,顺便写几个爬虫来打发无聊,在爬的过程中发现一些问题,记录下以便备忘。 依赖 用到的是在网上烂大街的cheerio库来处理爬取的内容,使用superagent处理请求,log4js来记录日志。 日志配置 话不多说,直接上代码
本文向大家介绍python爬虫入门教程之糗百图片爬虫代码分享,包括了python爬虫入门教程之糗百图片爬虫代码分享的使用技巧和注意事项,需要的朋友参考一下 学习python少不了写爬虫,不仅能以点带面地学习、练习使用python,爬虫本身也是有用且有趣的,大量重复性的下载、统计工作完全可以写一个爬虫程序完成。 用python写爬虫需要python的基础知识、涉及网络的几个模块、正则表达式、文件操作