-
形成循环 知道完成任务后形成有价值的数据并输出
查看全部 -
简单的爬虫结构
以及运行流程
查看全部 -
爬虫系统设计
查看全部 -
要加强练习~
查看全部 -
使用python3
1、
from urllib import request as urllib2
import http.cookiejar
2、
所有的print语句后需要加()
3、
cj=http.cookiejar.CookieJar()查看全部 -
urllib2的三种下载网页的方法:
1、给定URL,传送给urllib2.urlopen(url),实现网页的下载。对应代码为:
import urllib2
#直接请求
response=urllib2.urlopen('http://www.baidu.com')
#获取状态码,如果是200表示获取成功
print response.getcode()
#读取内容
cont=response.read()
2、添加data(向服务器提交需要用户输入的)、http header(向服务器提交http的头信息)此时urllib2.urlopen以request作为参数发送网页请求,对应代码:
import urllib2
#创建request对象
request=urllib2.request(url)
#添加数据 例如赋值a=1
request.add-data('a',‘1’)
#添加http的header 例如把爬虫伪装成Mozilla的浏览器
request.add-header(‘User-Agent’,‘Mozilla/5.0’)
#发送请求获取结果
response=urllib2.urlopen(request)
3、例如有些网页需要用户的登陆才能访问,需要添加cookie的处理,使用HTTPCookieProcessor;例如有些网页需要代理才能访问,使用ProxyHandler ; 例如有些网页的协议是使用HTTPS加密访问,使用HTTPSHandler ;例如有些网页的URL可以自动的相互跳转关系,使用HTTPRedirectHandler。这些handler传送给urllib2 build opener.因此urllib2具有场景处理能力。然后依然使用urllib2的urlopen的方法来存储一个URL/request来实现网页的下载。
对应代码:(例如增强cookie的处理)
#导入urllib2和cookielib这两个模块
import urllib2,cookielib
#创建cookie容器
cj=cookielib.CookieJar()
#以Cookie Jar为参数生成一个headler,再传给urllib2.build-opener方法来生成一个opener对象。就是创建opener。
opener=urllib2.build-opener(urllib2.HTTPCookieProcessor(cj))
#给urllib2安装opener
urllib2.install-opener(opener)
#使用带有cookie的Urllib2访问网页
response=urllib2.urlopen("http://www.baidu.com")
查看全部 -
网页下载器(核心):将互联网的URL对应网页下载到本地的工具
(目的是为了将网页下载到本地才能够进行后期的分析和处理)
网页下载器类似于网页浏览器,会将URL对应的互联网网页以HTML的形式下载到本地,存储成本地文件或者本地字符串,然后进行后期的分析和处理。
网页下载器:
urllib2:Python官方基础模块(直接的URL下载或者向网页提交一些用户输入的数据 甚至支持登陆网页的cookie处理 和需要代理访问的代理处理等这些增强功能)
requests:更强大的第三方软件
urllib2是本课程实践
查看全部 -
Python爬虫URL管理器的实现方式(三种)
(一)将已爬取或和待爬取的URL集合存放在内存中,用Python语言的话,可以将这两个URL集合放在set()数据结构中,Python的set结构可以自动去除重复的内容,
(二)将URL存放在关系数据库中,建立一个表,有两个字段(url,is_crawled),is_crawled字段标志这个URL的状态是待爬取还是已爬取。
(三)将URL存放在一个缓存数据库中,比如redis,redis本身支持set的结构,所以我们可以将待爬取和已爬取存储在两个set中。
大型公司适用缓存数据库
个人、小型公司适用内存,不够用时再用关系型数据库
实战演习用python的set
查看全部 -
URL管理器的作用:防止重复抓取、循环抓取。
URL管理器的功能:
3、判断是否还有带爬取URL
4、获取带爬取URL
1、判断待添加的URL是否本来就在容器中
2、添加心得URL到待爬取集合
5、将URL从待爬取移动到已爬取集合
查看全部 -
循环结束后输出价值数据成我们需要的格式。
查看全部 -
爬虫调度段(启动、停止、监视爬虫)
三大模块:URL管理器(管理所有URL数据)中取出待爬取的URL,传送给网页下载器(URL指定的网页下载,存储成字符串),将字符串传送给网页解析器(解析出有价值的数据),再到URL管理器。
每一个网页都有指向其他网页的URL,这些URL被解析出来之后,可以补充到URL管理器。因此,三大模块的关系是循环。
结果:有价值的数据
查看全部 -
import re from bs4 import BeautifulSoup html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> """ soup = BeautifulSoup(html_doc,'html.parser') print('获取所有链接') links = soup.find_all('a') for link in links: print(link.name,link['href'],link.get_text()) print('获取指定链接') link_node = soup.find('a',href = 'http://example.com/elsie') print(link_node.name,link_node['href'],link_node.get_text()) print('正则匹配') link_node = soup.find('a',href = re.compile(r"cie")) print(link_node.name,link_node['href'],link_node.get_text()) print('获取p段落文字') link_node = soup.find('p',class_ = 'title') print(link_node.name,link_node.get_text())
查看全部 -
import urllib.request from http import cookiejar url = 'http://www.baidu.com' print('第一种方法') response1 = urllib.request.urlopen(url) print(response1.getcode()) print(len(response1.read())) print('第二种方法') request = urllib.request.Request(url) request.add_header('user-agent','Mozilla/5.0') response2 = urllib.request.urlopen(request) print(response2.getcode()) print(len(response2.read())) print('第三种方法') cj = cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) urllib.request.install_opener(opener) response3 = urllib.request.urlopen(url) print(response3.getcode()) print(cj) print(response3.read())
查看全部 -
爬虫查看全部
-
五个模块:
爬虫总调度程序 spider_main url
管理器 url_manage
网页下载器 html_downloader
网页解析器 html_parser
输出 html_outputer
查看全部
举报