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)的更多相关文章

  1. 吴裕雄 python 爬虫(3)

    import hashlib md5 = hashlib.md5() md5.update(b'Test String') print(md5.hexdigest()) import hashlib ...

  2. 吴裕雄 python 爬虫(2)

    import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com' html = requests.get(url) ...

  3. 吴裕雄 python 爬虫(1)

    from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm' o = urlparse(url) pr ...

  4. 吴裕雄--python学习笔记:爬虫基础

    一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...

  5. 吴裕雄--python学习笔记:爬虫包的更换

    python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...

  6. 吴裕雄--python学习笔记:爬虫

    import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...

  7. 吴裕雄 python 神经网络——TensorFlow pb文件保存方法

    import tensorflow as tf from tensorflow.python.framework import graph_util v1 = tf.Variable(tf.const ...

  8. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(4)

    # -*- coding: utf-8 -*- import glob import os.path import numpy as np import tensorflow as tf from t ...

  9. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(3)

    import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...

随机推荐

  1. tp3.2 支付宝app支付

    pay方法 /** *支付宝支付 */ public function pay($param) { vendor('alipay.AopSdk');// 加载类库 $config = array( ' ...

  2. 用T-SQL命令附加数据库时,出现如下异常信息

    用T-SQL命令附加数据库时,出现如下异常信息: 无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server ...

  3. 当别人给你一个wsdl或者webservice接口时

    一  通过wsdl生成客户端 引用于http://www.cnblogs.com/yisheng163/p/4524808.html 参照http://www.cnblogs.com/xdp-gacl ...

  4. python - requests从excel中获取测试用例数据

    HttpRequests.py #-*- coding:utf-8 -*- import requests class HttpRequests(): def http_requests(self,u ...

  5. 17. 判断是否IE浏览器

    var isNotIE = !window.VBArray;    //判断是否IE浏览器    if(isNotIE) {        //如果不是IE浏览器        $("#da ...

  6. jquery移除select下所有的option选项

    $("#search").find("option").remove(); 或者 $("#search").empty();

  7. Mapper的.xml文件的delete的参数问题

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-// ...

  8. 构建最小JDK Docker镜像

    参考: https://my.oschina.net/shyloveliyi/blog/1627020 1.首先下载jre,下载地址是https://www.java.com/en/download/ ...

  9. Kubernetes的ConfigMap说明

    这篇博文,我们来说一说,关于在kubernetes的pod中自定义配置的问题. 我们知道,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库,缓存甚至是队列等等. ...

  10. Linux FACL(文件访问控制列表)

    文件有三种权限 属主权限   属组权限  其他权限 现在有这样一个场景,用户 A 想把文件共享给不是同组内用户 B ,而又不想修改其他权限,这时候 FACL 就起作用了 FACL可以给文件添加一个拓展 ...