python3: 爬虫---- urllib, beautifulsoup
最近晚上学习爬虫,首先从基本的开始;
python3 将urllib,urllib2集成到urllib中了, urllib可以对指定的网页进行请求下载, beautifulsoup 可以从杂乱的html代码中
分离出我们需要的部分;
注: beautifulsoup 是一种可以从html 或XML文件中提取数据的python库;
实例1:
from urllib import request
from bs4 import BeautifulSoup as bs
import re header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'
} def download():
"""
模拟浏览器进行访问;
:param url:
:return:
"""
for pageIdx in range(1, 3, 1):
#print(pageIdx)
url = "https://www.cnblogs.com/#p%s" % str(pageIdx)
print(url)
req = request.Request(url, headers=header)
rep = request.urlopen(req).read()
data = rep.decode('utf-8')
print(data)
content = bs(data)
for link in content.find_all('h3'):
content1 = bs(str(link), 'html.parser')
print(content1.a['href'],content1.a.string)
curhtmlcontent = request.urlopen(request.Request(content1.a['href'], headers=header)).read()
#print(curhtmlcontent.decode('utf-8'))
open('%s.html' % content1.a.string, 'w',encoding='utf-8').write(curhtmlcontent.decode('utf-8')) if __name__ == "__main__":
download()
实例2:
# -- coding: utf-8 --
import unittest
import lxml
import requests
from bs4 import BeautifulSoup as bs def school():
for index in range(2, 34, 1):
try:
url="http://gaokao.chsi.com.cn/gkxx/zszcgd/dnzszc/201706/20170615/1611254988-%s.html" % str(index)
r = requests.get(url=url)
soup = bs(r.content, 'lxml')
city = soup.find_all(name="td",attrs={"colspan":"7"})[0].string
fp = open("%s.txt" %(city), "w", encoding="utf-8")
content1 = soup.find_all(name="tr", attrs={"height": "29"})
for content2 in content1:
try:
contentTemp = bs(str(content2), "lxml")
soup_content = contentTemp.find_all(name="td")[1].string
fp.write(soup_content + "\n")
print(soup_content)
except IndexError:
pass
fp.close()
except IndexError:
pass class MyTestCase(unittest.TestCase):
def test_something(self):
school() if __name__ == '__main__':
unittest.main()
BeatifulSoup支持很多HTML解析器(下面是一些主要的):
解析器 | 使用方法 | 优势 | 劣势 |
Python标准库 | BeautifulSoup(markup, “html.parser”) | (1)Python的内置标准库(2)执行速度适中(3)文档容错能力强 | Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差 |
lxml HTML解析器 | BeautifulSoup(markup, “lxml”) | (1)速度快(2)文档容错能力强 | 需要安装C语言库 |
lxml XML解析器 | BeautifulSoup(markup, [“lxml”, “xml”]) OR BeautifulSoup(markup, “xml”) | (1)速度快(2)唯一支持XML的解析器 | 需要安装C语言库 |
html5lib | BeautifulSoup(markup, “html5lib”) | (1)最好的容错性(2)以浏览器的方式解析文档(3)生成HTML5格式的文档 | (1)速度慢(2)不依赖外部扩展 |
python3: 爬虫---- urllib, beautifulsoup的更多相关文章
- Python3 使用 urllib 编写爬虫
什么是爬虫 爬虫,也叫蜘蛛(Spider),如果把互联网比喻成一个蜘蛛网,Spider就是一只在网上爬来爬去的蜘蛛.网络爬虫就是根据网页的地址来寻找网页的,也就是URL.举一个简单的例子,我们在浏览器 ...
- 常见的爬虫分析库(1)-Python3中Urllib库基本使用
原文来自:https://www.cnblogs.com/0bug/p/8893677.html 什么是Urllib? Python内置的HTTP请求库 urllib.request ...
- urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250
对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...
- python3爬虫系列19之反爬随机 User-Agent 和 ip代理池的使用
站长资讯平台:python3爬虫系列19之随机User-Agent 和ip代理池的使用我们前面几篇讲了爬虫增速多进程,进程池的用法之类的,爬虫速度加快呢,也会带来一些坏事. 1. 前言比如随着我们爬虫 ...
- python爬虫 - Urllib库及cookie的使用
http://blog.csdn.net/pipisorry/article/details/47905781 lz提示一点,python3中urllib包括了py2中的urllib+urllib2. ...
- 对于python爬虫urllib库的一些理解(抽空更新)
urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urllib库中,所有和网 ...
- python3爬虫中文乱码之请求头‘Accept-Encoding’:br 的问题
当用python3做爬虫的时候,一些网站为了防爬虫会设置一些检查机制,这时我们就需要添加请求头,伪装成浏览器正常访问. header的内容在浏览器的开发者工具中便可看到,将这些信息添加到我们的爬虫代码 ...
- Python3中Urllib库基本使用
什么是Urllib? Python内置的HTTP请求库 urllib.request 请求模块 urllib.error 异常处理模块 urllib.par ...
- Python3.x:BeautifulSoup()解决中文乱码问题
Python3.x:BeautifulSoup()解决中文乱码问题 问题: BeautifulSoup获取网页内容,中文显示乱码: 解决方案: 遇到情况也是比较奇葩,利用chardet获取网页编码,然 ...
随机推荐
- CentOS 安装、配置supervisord
负责在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件. 安装yum install superviso ...
- P1427 小鱼念数字
P1427 题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了) ...
- Cetos 7 系统安装备注事项
说明:此篇内容为个人记录备注事项,具体的安装操作请参考其他教程: 系统安装: 公司的服务器型号为戴尔R330 卡片式服务器,安装过程中遇到一些问题,此文章中简单记录下 1.下载一份Cetos 系统镜像 ...
- Android环境搭建(大学授课课件)
前面一直没有提过如何搭建Android开发环境,其实这些网上一大堆,随便一搜就是很多大神的详细介绍.本人过于懒惰,拿出大学授课课件供大家参考.非原创 位) 下载地址: sdk:http://pan ...
- robotframework测试用例加入注释
*** Variables ***${HOST} 192.168.132.135${USER} username*** Test Cases ***Simple [Documentation] Sim ...
- Sudoku POJ - 3076
Sudoku Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 5769 Accepted: 2684 Descripti ...
- Codeforces Bubble Cup 11 J. Moonwalk challenge加强版
题意 有一棵 \(n\) 个节点的树,每条边上有一个字符,有 \(m\) 次询问. 每次会选定两个点 \(u, v\) , \(u\) 到 \(v\) 的路径上的字符形成了一个字符串 \(T\) ,再 ...
- hexo报错集锦
1.报错信息如下 FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubles ...
- IHttpHandler处理请求api
使用IHttpHandler处理请求,实现webapi功能. 研究asp.net管道处理事件后,可用此法实现webapi功能. 测试环境 VS2017 WIN10 IIS10 集成模式 关键接口类两个 ...
- centos7下zookeeper集群安装部署
应用场景:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件. 它是一个为分布式应用提供一致性服务的软 ...