Beautiful Soup

https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/  Beautiful Soup 4.2.0 文档

http://www.imooc.com/learn/712  视频课程:python遇见数据采集

https://segmentfault.com/a/1190000005182997  PyQuery的使用方法

import bs4
print(bs4.__version__) #当前版本是4.5.3  2017-4-6

安装第三方库

C:\Python3\scripts\> python pip.exe install bs4 (引入第三方库 bs4 )——BeautifulSoup
C:\Python3\scripts\> python pip.exe install html5lib(引入第三方库 html5lib )——html5解析器,BeautifulSoup要用到

打开本地的zzzzz.html文件,用 BeautifulSoup 解析

from urllib import request
from bs4 import BeautifulSoup
import html5lib #html5解析器
url='file:///C:/Python3/zz/zzzzz.html'
resp = request.urlopen(url)
html_doc = resp.read()
soup = BeautifulSoup(html_doc,'lxml')#使用BeautifulSoup解析这段代码。'lxml'是解析器,除此之外还有'html.parser'、'xml'、'html5lib'等
print(soup.prettify()) #按照标准的缩进格式的结构输出
print(soup.title)#<title>标签
print(soup.title.string)#<title>标签的文字 print(soup.find(id="div111"))#查找id
print(soup.find(id="div111").get_text())#获得标签内的所有文本内容文字 print(soup.find("p", {"class": "p444"}))#查找<p class="p444"></p>标签 (这里的数据类型是 'bs4.element.Tag')
print(soup.select('.p444'))#css选择器!!! (这里的数据类型是 list)
for tag1 in soup.select('.p444'):
print(tag1.string) print(soup.select('.div2 .p222'))#css选择器!!!
print(soup.findAll("a"))#所有<a>标签

for link in soup.findAll("a"):
print(link.get("href"))
print(link.string)

使用正则

import re
data = soup.findAll("a",href=re.compile(r"baidu\.com"))
for tag22 in data:
print(tag22.get("href"))

练习1:解析一个网页

由于win7上的编码解码问题搞不定,只好先使用标准html5的网页了。先拿廖大的python教程页做练习了,抓取左侧的目录

# -*- coding: utf-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import html5lib #html5解析器 url="http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000"
resp = request.urlopen(url)
html_doc = resp.read() #使用BeautifulSoup解析这段代码。'lxml'是解析器,除此之外还有'html.parser'、'xml'、'html5lib'等
soup = BeautifulSoup(html_doc,'html.parser')
#soup = BeautifulSoup(html_doc,'lxml') #按照标准的缩进格式的结构输出
#print(soup.prettify()) f = open("c:\\Python3\zz\\0.txt","w+")
for tag1 in soup.select('.x-sidebar-left-content li a'):
#ss = tag1.get_text()
ss = tag1.string
ss2 = tag1.get("href") print(ss," --- ","http://www.liaoxuefeng.com",ss2)
f.writelines(ss + " --- http://www.liaoxuefeng.com"+ss2+"\n")#写入字符串 f.close()

2017-10-18:

http://www.cnblogs.com/zhaof/p/6930955.html  一些解析器(Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐安装。)

爬取 http://www.bootcdn.cn,获得一个字典( dict["包名称": star数值]  ),存入文本文件:  (一个想法,可以定期扒一次,例如3个月。再比对上次的dict记录,观察哪些项目的星升的比较快。比较受关注。)

#python 3.6.0
import requests #2.18.4
import bs4 #4.6.0
import html5lib
url = "http://www.bootcdn.cn/"
#url = "http://www.bootcdn.cn/all/"
headers = {'User-Agent': 'mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/61.0.3163.100 safari/537.36'}
r = requests.get(url,headers=headers)
# r=requests.get(url)
print(r.encoding) #获得编码
print(r.status_code) #获得状态码 soup = bs4.BeautifulSoup(r.content.decode("utf-8"), "lxml") #'lxml'是解析器,除此之外还有'html.parser'、'xml'、'html5lib'等
#soup = bs4.BeautifulSoup(r.content, "html5lib")
#aa = soup.decode("UTF-8", "ignore")
#print(soup.prettify())#按照标准的缩进格式的结构输出 #将数据解析成字典
element = soup.select('.packages-list-container .row')
starsList = {}
for item in element:
# print(item.select("h4.package-name"))
# print(item.select(".package-extra-info span"))
# print(item.h4.text)
# print(item.span.text)
starsList[item.h4.text]=item.span.text
print(starsList) #将字典存入文本文件
import time
from datetime import datetime
try:
f = open('1.txt', 'a+')
t2 = datetime.fromtimestamp(float(time.time()))
f.write('\n'+str(t2))
f.write('\n'+str(starsList))
finally:
if f:
f.close()

爬取廖雪峰的python教程:(就是先用bs4解析左边的目录列表,拿到链接,存为字典,并保存到文本文件中。再扒取。)  共123条,但我只扒下28个文件

import requests
import bs4
import urllib
url="http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000"
#r = requests.get(url) #这里不加header,不让爬了
headers = {'User-Agent': 'mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/61.0.3163.100 safari/537.36'}
r = requests.get(url,headers=headers)
soup = bs4.BeautifulSoup(r.content.decode("utf-8"), "lxml") # 生成字典,并保存在文本文件中
f = open("c:\\Python3\\zz\\liaoxuefeng\\a.txt","w+")
mylist = soup.select('#x-wiki-index .x-wiki-index-item')
myhrefdict = {}
for item in mylist:
myhrefdict[item.text] = "https://www.liaoxuefeng.com" + item["href"]
#print(item.text,item["href"]) #item.text tag1.string item["href"] item.get("href")。
#f.writelines(item.text + " --- http://www.liaoxuefeng.com"+item["href"]+"\n")#写入字符串
f.write(str(myhrefdict))
f.close() # 爬取文件
i = 0
for key,val in myhrefdict.items():
i += 1
name = str(i) + '_' + key + '.html'
link = val
print(link,name)
urllib.request.urlretrieve(link, 'liaoxuefeng\\' + name) # 提前要创建文件夹

Requests库:  2017-10-30

http://www.python-requests.org/en/master/api/  Requests库 API文档

http://www.cnblogs.com/yan-lei/p/7445460.html  Python网络爬虫与信息提取

requests.request()  构造一个请求,支撑以下各方法的基础方法
requests.get(url, params=None, **kwargs) 获取HTML网页的主要方法,对应于HTTP的GET
requests.head(url, **kwargs) 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post(url, data=None, json=None, **kwargs) 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put(url, data=None, **kwargs) 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch(url, data=None, **kwargs) 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete(url, **kwargs) 向HTML页面提交删除请求,对应于HTTP的DELET

代理:  2018-2-5

import requests

proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
} requests.get("http://aaa.com", proxies=proxies)

https://www.v2ex.com/t/364904#reply0  带大家玩一个练手的数据采集(简洁版)

http://www.xicidaili.com/nn/  高匿免费代理

...

python库:bs4,BeautifulSoup库、Requests库的更多相关文章

  1. (转)Python爬虫利器一之Requests库的用法

    官方文档 以下内容大多来自于官方文档,本文进行了一些修改和总结.要了解更多可以参考 官方文档 安装 利用 pip 安装 $ pip install requests 或者利用 easy_install ...

  2. Python爬虫利器一之Requests库的用法

    前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...

  3. 【Python爬虫】BeautifulSoup网页解析库

    BeautifulSoup 网页解析库 阅读目录 初识Beautiful Soup Beautiful Soup库的4种解析器 Beautiful Soup类的基本元素 基本使用 标签选择器 节点操作 ...

  4. python WEB接口自动化测试之requests库详解

    由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...

  5. Python nose单元测试框架结合requests库进行web接口测试

    [本文出自天外归云的博客园] 之前写过一篇关于nose使用方法的博客.最近在做一元乐购产品的接口测试,结合着python的requests库可以很方便的进行web接口测试并生成测试结果.接口测试脚本示 ...

  6. python爬虫入门三:requests库

    urllib库在很多时候都比较繁琐,比如处理Cookies.因此,我们选择学习另一个更为简单易用的HTTP库:Requests. requests官方文档 1. 什么是Requests Request ...

  7. 【python接口自动化】- 使用requests库发送http请求

    前言:什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库.它⽐ urllib 更加⽅便,可以节约我们⼤ ...

  8. 【Python爬虫】爬虫利器 requests 库小结

    requests库 Requests 是一个 Python 的 HTTP 客户端库. 支持许多 HTTP 特性,可以非常方便地进行网页请求.网页分析和处理网页资源,拥有许多强大的功能. 本文主要介绍 ...

  9. python爬虫(6)--Requests库的用法

    1.安装 利用pip来安装reques库,进入pip的下载位置,打开cmd,默认地址为 C:\Python27\Scripts 可以看到文件中有pip.exe,直接在上面输入cmd回车,进入命令行界面 ...

  10. python爬虫(八) requests库之 get请求

    requests库比urllib库更加方便,包含了很多功能. 1.在使用之前需要先安装pip,在pycharm中打开: 写入pip install requests命令,即可下载 在github中有关 ...

随机推荐

  1. elixir环境配置

    mac下 brew install elixir debian下版本可能太低,需要kiex 安装 curl -sSL https://raw.githubusercontent.com/taylor/ ...

  2. web环境中微信JS-SDK配置

    一.公众号相关设置 首先,在公众号中进行JS安全域名的设置,在公众号设置-功能设置中选择JS接口安全域名,点击设置进入设置对话框.按照要求逐步进行,完成设置. 二.页面请求发送与处理 引入所需js: ...

  3. bzoj4980: 第一题

    Description 神犇xzyo听说sl很弱,于是出了一题来虐一虐sl.一个长度为2n(可能有前缀0)的非负整数x是good的,当且仅当 存在两个长度为n(可能有前缀0)的非负整数a.b满足a+b ...

  4. C#多线程更新,查询MongoDB数据

    对多线程一直在用,但是从来没去深入研究过注意的事项,包括和锁的配合也是一知半解没有真正理解锁(lock)的用法. 这次在做数据分析是需要将访问的url中host部分记录,如果已经存在就直接匹配id,没 ...

  5. HEAD插件安装

    简介 是一个HTML5编写的集群操作和管理工具,可以对集群进行傻瓜式操作,Head插件中可以显示集群的拓扑结构,执行索引和节点级别等操作,同时也可以输入RESTful命令和Elasticsearch交 ...

  6. 服务容错保护断路器Hystrix之七:做到自动降级

    从<高可用服务设计之二:Rate limiting 限流与降级>中的“自动降级”中,我们这边将系统遇到“危险”时采取的整套应急方案和措施统一称为降级或服务降级.想要帮助服务做到自动降级,需 ...

  7. consul之:ACL配置使用

    consul自带ACL控制功能,看了很多遍官方文档,没有配置步骤https://www.consul.io/docs/internals/acl.html 主要对各种配置参数解释,没有明确的步骤,当时 ...

  8. 禅道在docker上部署与迁移

    一.禅道部署 1.下载地址 禅道开源版:   http://dl.cnezsoft.com/zentao/docker/docker_zentao.zip 数据库用户名: root,默认密码: 123 ...

  9. 以太网安全技术ACL原理+配置

    一.以太网访问控制列表 主要作用:在整个网络中分布实施接入安全性 访问控制列表ACL(Access Control List)为网络设备提供了基本的服务安全性.对某个服务而言,安全管理员首先应该考虑的 ...

  10. sys.modules[__name__]的一个实例

    关于sys.modules[__name__]的用法,百度上阅读量比较多得一个帖子是:https://www.cnblogs.com/robinunix/p/8523601.html 对于里面提到的基 ...