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. JavaScript压缩代码解压缩还原具体办法

    我们知道许多网站都对Javascript代码进行了压缩,但这对开发者和学习者来说,读起来很费劲,本文分享给大家在Chrome浏览器中,如何使用Pretty Print功能反压缩JS代码,让代码更加直观 ...

  2. 黄聪:ffmpeg参数说明(转载)

    ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wm ...

  3. 直接突破百度网盘,用IDM或者迅雷下载。

    直接突破百度网盘,用IDM或者迅雷下载.推荐浏览器: 360 ,CHORME360,: 打开网盘下载页,然后F12→找到CONSOLE→刷新→输入代码“Object.defineProperty(th ...

  4. appium 点击物理按键

    有时候我们遇到一些需要点击手机物理返回按键,或者home键等操作,总结如下: adb shell input keyevent 点击home键: adb shell input keyevent 3 ...

  5. 服务网关zuul之五:熔断

    路由熔断 当我们的后端服务出现异常的时候,我们不希望将异常抛出给最外层,期望服务可以自动进行一降级.Zuul给我们提供了这样的支持.当某个服务出现异常时,直接返回我们预设的信息. 如果没有配置fall ...

  6. Python——numpy(python programming)

    np.insert(a,第几行/列,数,axis=??) sum,mean,std,var,min,max,argmin,argmax,unique np.random a=np.random.nor ...

  7. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转载)

    http://www.imooc.com/article/17290 http://www.51testing.com/html/38/n-3720638.html https://dev.mysql ...

  8. go语言学习--channel的关闭

    在使用Go channel的时候,一个适用的原则是不要从接收端关闭channel,也不要在多个并发发送端中关闭channel.换句话说,如果sender(发送者)只是唯一的sender或者是chann ...

  9. PyCharm的一些设置

    设置使用UTF-8 在任何情况下: 设置写python脚本,新建 脚本的时候默认加的头文件. # !/usr/bin/env python# -*- coding:utf-8 -*-# Author: ...

  10. dialog--not attached to window manager

    该异常表示view没有添加到窗口管理器,通常是我们dismiss对话框的时候,activity已经不存在了,建议不要在非UI线程操作对话框. [解决方案]:常发生这类Exception的情形都是,有一 ...