吴裕雄 python 爬虫(4)
import requests user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
headers = {'User-Agent':user_agent}
r = requests.get("http://www.gov.cn/zhengce/content/2017-11/23/content_5241727.htm",headers = headers)
print(r.text)

print('\n\n\n')
print('代码运行结果:')
print('==============================\n')
print('编码方式:',r.encoding)
print('\n==============================')
print('\n\n\n')

#修改encoding为utf-8
r.encoding = 'utf-8'
#重新打印结果
print(r.text)

#指定保存html文件的路径、文件名和编码方式
with open ('E:\\requests.html','w',encoding = 'utf8') as f:
#将文本写入
f.write(r.text)
import re pattern = re.compile(r'\d+')
result1 = re.match(pattern, '你说什么都是对的23333')
# print('\n\n\n')
print('代码运行结果:')
# print('==============================\n')
if result1:
print(result1.group())
else:
print('匹配失败')
result2 = re.match(pattern, '23333你说什么都是对的')
if result2:
print(result2.group())
else:
print('匹配失败')
# print('\n==============================')
# print('\n\n\n')

#用.search()来进行搜索
result3 = re.search(pattern, '你说什么23333都是对的')
print('代码运行结果:')
print('==============================\n')
#如果匹配成功,打印结果,否则打印“匹配失败”
if result3:
print(result3.group())
else:
print('匹配失败')

print('代码运行结果:')
# print('==============================\n')
#使用.split()把数字之间的文本拆分出来
print (re.split(pattern, '你说双击666都是对的23333哈哈'))
# print('\n==============================')
# print('\n\n\n')

# print('\n\n\n')
print('代码运行结果:')
# print('==============================\n')
#使用.findall找到全部数字
print (re.findall(pattern, '你说双击666都是对的23333哈哈'))
# print('\n==============================')
# print('\n\n\n')

matchiter = re.finditer(pattern, '你说双击666都是对的23333哈哈')
for match in matchiter:
print(match.group())

p = re.compile(r'(?P<word1>\w+) (?P<word2>\w+)')
s = 'i say, hello world!'
print (p.sub(r'\g<word2> \g<word1>',s))

p = re.compile(r'(\w+) (\w+)')
print(p.sub(r'\2 \1',s))

def func(m):
return m.group(1).title() + ' ' + m.group(2).title()
print(p.sub(func,s))

print(p.subn(r'\2 \1', s))
print(p.subn(func,s))

#导入BeautifulSoup
from bs4 import BeautifulSoup
#创建一个名为soup的实例
soup = BeautifulSoup(r.text, 'lxml', from_encoding='utf8')
print(soup)

# print('\n\n\n')
print('代码运行结果:')
# print('==============================\n')
#使用.'标签名'即可提取这部分内容
print(soup.title)
# print('\n==============================')
# print('\n\n\n')

# print('\n\n\n')
print('代码运行结果:')
# print('==============================\n')
#使用.string即可提取这部分内容中的文本数据
print(soup.title.string)
# print('\n==============================')
# print('\n\n\n')

# print('\n\n\n')
print('代码运行结果:')
# print('==============================\n')
#使用.get_text()也可提取这部分内容中的文本数据
print(soup.title.get_text())
# print('\n==============================')
# print('\n\n\n')

# print('\n\n\n')
print('代码运行结果:')
# print('==============================\n')
#打印标签<p>中的内容
print(soup.p.string)
# print('\n==============================')
# print('\n\n\n')

#使用find_all找到所有的<p>标签中的内容
texts = soup.find_all('p')
#使用for循环来打印所有的内容
for text in texts:
print(text.string)

............................................

#找到倒数第一个<a>标签
link = soup.find_all('a')[-1]
# print('\n\n\n')
print('BeautifulSoup提取的链接:')
# print('==============================\n')
print(link.get('href'))
# print('\n==============================')
# print('\n\n\n')

print(soup.title.name)
print(soup.title.string)
print(soup.attrs)
print(soup.a.string)
print(soup.p.string)
print(type(soup.a.string))

print(soup.head.contents)

print(len(soup.head.contents))
# print(soup.head.contents[3].string)
50
for child in soup.head.children:
print(child)

for child in soup.head.descendants:
print(child)

print(soup.head.string)
print(soup.title.string)
print(soup.html.string)

for string in soup.strings:
print(repr(string))

print(soup.title,'\n')
print(soup.title.parent)

print(soup.a)
for parent in soup.a.parents:
if parent is None:
print(parent)
else:
print(parent.name)

print(soup.p.next_sibling.next_sibling)

for sibling in soup.a.next_siblings:
print(sibling)

for element in soup.a.next_elements:
print(element.string)

print(soup.find_all('b'))

print(soup.find_all('p'))

..................................................................

for tag in soup.find_all(re.compile('^b')):
print(tag.name)
#print(soup.find_all(re.compile('^p')))

print(soup.find_all(['a','b']))

for tag in soup.find_all(True):
print(tag.name)

....................................................
def hasclass_id(tag):
return tag.has_attr('class') and tag.has_attr('id')
print(soup.find_all(hasclass_id))

print(soup.find_all(style='text-indent: 2em; font-family: 宋体; font-size: 12pt;'))
print(soup.find_all(href=re.compile('gov.cn')),'\n')

print(soup.find_all(text=re.compile('通知')))

print(soup.find_all('p',limit=2))

policies = requests.get('http://www.gov.cn/zhengce/zuixin.htm',headers = headers)
policies.encoding = 'utf-8'
print(policies.text)

p = BeautifulSoup(policies.text,'lxml',from_encoding='utf8')
print(p)

contents = p.find_all(href = re.compile('content'))
吴裕雄 python 爬虫(4)的更多相关文章
- 吴裕雄 python 爬虫(3)
import hashlib md5 = hashlib.md5() md5.update(b'Test String') print(md5.hexdigest()) import hashlib ...
- 吴裕雄 python 爬虫(2)
import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com' html = requests.get(url) ...
- 吴裕雄 python 爬虫(1)
from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm' o = urlparse(url) pr ...
- 吴裕雄--python学习笔记:爬虫基础
一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...
- 吴裕雄--python学习笔记:爬虫包的更换
python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...
- 吴裕雄--python学习笔记:爬虫
import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...
- 吴裕雄 python 神经网络——TensorFlow pb文件保存方法
import tensorflow as tf from tensorflow.python.framework import graph_util v1 = tf.Variable(tf.const ...
- 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(4)
# -*- coding: utf-8 -*- import glob import os.path import numpy as np import tensorflow as tf from t ...
- 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(3)
import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...
随机推荐
- CentOS7.4安装部署openstack [Liberty版] (二)
继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...
- IIS7.5和IIS8如何设置FTP的pasv端口范围
如果不设置端口范围,在防火墙开启的情况下,连接FTP时可能出现列表错误的现象,下面介绍下如何设置FTP的pasv端口范围.. 一.首先打开IIS选择服务器会进入全局设置,再双击FTP防火墙支持 二.设 ...
- 「ZJOI2015」地震后的幻想乡
/* 难度最低的解法 钦定一个边集S作为前S小如果这个边集假如第|S|小这条边时加入时S恰好联通, 那么我们就能够算出他的贡献了 恰好联通 = 加了这条边之前不连通方案数 - 加了这条边之后不连通方案 ...
- Java并发编程:Java Thread 的 run() 与 start() 的区别
1. sleep 和 wait 方法解释 sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后 ...
- eclipse创建的maven项目中使用javafx
类似普通maven项目,不需要特地创建javafx项目. 将fxml资源文件放在resource目录下即可.
- C#利用反射动态调用DLL并返回结果,和获取程序集的信息
反射的基本概念: .Net Framework 中提供了反射机制,可以再加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息 创建Assembly和Entity两个程序集,在Assembl ...
- Nginx配置HTTPS证书网站
前提: 1.主机需要先安装openssl 2.编译安装nginx时,要加上--with-http_ssl_module 这个ssl模块 现在开始配置:(我当时配置时,主机已安装了openss ...
- 自制进度条在python3下PyCharm中运行或在控制台按照目录运行
import timescale = 50print("执行开始".center(scale//2,"-"))start = time.perf_counter ...
- SQL Server MSSQLSERVER 服务无法启动解决方案
打开sql配置工具下的sql server configuration manager,然后将VIA协议禁用.
- git 出现冲突时的解决办法
<一> 二者兼得最麻烦 1, 出现冲突一般出现在群体开发两个及以上开发者同时修改同一个文件时 2, 具体表现为 git pull , git push 和 git commit 命令执行失 ...