吴裕雄 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 ...
随机推荐
- Submline Text 3插件sublimeTmpl添加新模板
1.安装 一般安装Package Control 2.插件 添加模板 1).进入Preferences->Browse Packages->SublimeTmpl->template ...
- 小朋友学C语言(6)
(一) 先动手编写一个程序: #include <stdio.h> int main() { if(1) { printf("The condition is true!\n&q ...
- Linux性能优化 第六章 性能工具:磁盘I/O
6.1 磁盘I/O介绍 一般来说,Linux磁盘的每个分区要么包含一个文件系统,要么包含一个交换分区.这些分区被挂载到Linux根文件系统,该系统由/etc/fstab指定.这些被挂载的文件系统包含了 ...
- JVM总结-字节码
在运行过程中,每当调用进入一个 Java 方法,Java 虚拟机会在当前线程的 Java 方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数.这个栈帧的大小是提前计算好的,而且 Java 虚拟机 ...
- python学习之----导航树
findAll 函数通过标签的名称和属性来查找标签 .但是如果你需要通过标签在文档中的位 置来查找标签,该怎么办?这就是导航树(Navigating Trees)的作用.在第1 章里,我们 看过用单一 ...
- python - requests从excel中获取测试用例数据
HttpRequests.py #-*- coding:utf-8 -*- import requests class HttpRequests(): def http_requests(self,u ...
- vue搭配axios踩坑
客户端项目中有一个小需求“我的卡券”,有单独入口,所以综合考虑之后,采用了vue来实现,因为是初次使用,导致了选型不当,先用了SUI-Mobile来搭建页面,当决定使用vue的时候,页面也搭建完毕了, ...
- 【Jmeter自学】常见错误类型(九)
==================================================================================================== ...
- sql server转oracle需要注意的几点
1. 字符型的字段相加需要用“||”,如果用“+”的话,会报“无效的数字”的错误. 2. Top 1 类似的脚本需要通过where rownum<=1来实现. 3. ISNULL函 ...
- [Android] android.util.Log
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, W ...