为了账号安全,请及时绑定邮箱和手机立即绑定

Python开发简单爬虫

蚂蚁帅帅 全栈工程师
难度初级
时长 1小时14分
学习人数
综合评分9.67
646人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 分析目标即页面分析导致抓取策略
    查看全部
  • 下载器的功能图解
    查看全部
  • python 3.6X中没有add_data方法,Request类中有data属性可以直接进行赋值 注意:网页提交是二进制需要强制类型转换 req = urllib.request.Request(url='https://www.baidu.com/') req.data = b'some data' urllib.request.urlopen(req)
    查看全部
  • from bs4 import BeautifulSoup import re import urlparse class HtmlParser(object): def _get_new_urls(self, page_url, soup): new_urls = set() links = soup.find_all('a', href=re.compile(r"/view/\d+\.htm")) for link in links: new_url = link['href'] new_full_url = urlparse.urljoin(page_url, new_url) new_urls.add(new_full_url) return new_urls def _get_new_data(self, page_url, soup): res_data = {} res_data['url'] = page_url title_node = soup.find('dd', class_="lemmaWgt-lemmaTitle-title").find("h1") res_data['title'] = title_node.get_text() summary_node = soup.find('div', class_="lemma-summary") res_data['summary'] = summary_node.get_text() return res_data def parse(self, page_url, html_cont): if page_url is None or html_cont is None: return soup = BeautifulSoup(html_cont, 'html.parse', from_encoding='utf-8') new_urls = self._get_new_urls(page_url, soup) new_data = self._get_new_data(page_url, soup) return new_urls, new_data
    查看全部
  • from baike_spider import url_manager, html_downloader, html_parser,\ html_outputer class SpiderMain(): def __init__(self): self.urls=url_manager.UrlManager() self.downloader=html_downloader.HtmlDownloader() self.parser=html_parser.HtmlParser() self.outputer=html_outputer.HtmlOutputer() def craw(self,root_url): count=1 self.urls.add_new_url(root_url) while self.urls.has_new_url():#如果有待爬去的url new_url=self.urls.get_new_url()#取出一个 print 'craw %d:%s' %(count,new_url) html_cont=self.downloader.download(new_url) new_urls,new_data=self.parser.parse(new_url,html_cont) self.urls.add_new_urls(new_urls) self.outputer.collect_data(new_data) count=count+1 if count=1000 break self.outputer.output_html() if _name_=="__main__": root_url = "http://baike.baidu.com/view/21087.htm" obj_spider=SpiderMain() obj_spider.craw(root_url)
    查看全部
    1 采集 收起 来源:调度程序

    2018-03-22

  • URL
    查看全部
  • 网页解析器:从网页中提取有价值数据的工具 网页解析器以Html网页字符串为输入提取出价值数据和新URL列表 Python网页解析器: 1.正则表达式 2.html.parser 3.BeautifulSoup(可使用html.parser和lxml作为解析器,较强大) 4.lxml 正则表达式采取模糊匹配 后三者采取结构化解析 结构化解析-将整个网页文档下载成一个DOM树,以树的方式进行遍历和访问。将整个网页文档当成一个Document对象,其下是根节点<html>,根节点下有元素<head>和元素<body>。<head>元素下有<title>元素,每个元素如果没有子元素就会对应到它的文本(如title对应文本的标题)。元素<body>下包含元素<a>和元素<div>,元素<a>下是文本的链接,元素<div>包含子元素或文本段落。如果每个元素有自身属性也会包含其属性如<href>。 通过树可以定位到元素,访问其属性和自身文本
    查看全部
  • 爬虫调度器:启动、停止、监视爬虫运行情况; URL管理器:将要爬取的URL和已经爬取的URL 网页下载器:URL管理器将将要爬取的URL传送给网页下载器下载下来; 网页解析器:将网页下载器下载的网页的内容传递给网页解析器解析; (1)、解析出新的URL传递给URL管理器; (2)、解析出有价值的数据; 上面三个形成了一个循环,只要网页解析器有找到新的URL,就一直执行下去;
    查看全部
  • urllib2下载网页方法--1(最简介方法) import urllib2 response = urllib2.urlopen('http://wwww.baidu.com') #若状态码为200,则表示成功 print response.getcode() #读取下载的内容 cont = response.read() 2.共享处理 添加data(需要用户输入的参数)、http header(向服务器提交http信息) 将url、data、header传送给urllib2.Request生成request对象,后继续使用urllib2.urlopen(request) import urllib2 #导入模块 request = urllib2.request(url)#创建Request对象 request.add_data(‘a’,‘1’)#提交数据/如a这个数据项等于1 request.add_header(‘User-Agent’,‘Mozilla/5.0’)#添加http的header/将爬虫 伪装成Mozilla浏览器 response = urllib2.urlopen(request)#发送请求获取结果 3.添加特殊情景的处理器: 需要用户登录的需要cookie处理:HTTPCookieProcessor 代理访问:ProxyHandler HTTPS加密访问:HTTPSHandler URL相互自动跳转:HTTPRedirectHandler 将这些handler传递给urllib2的build_opener的方法来创建一个opener对象: opener = urllib2.build_opener(handler) 然后给urllib2 install_opener这个opener: urllib2.install_opener(opener) 后urllib2.urlopen(url) 或urllib2.urlopen(request) 举例cookie,如图
    查看全部
  • BeautifulSoup语法: 根据一个HTML网页字符串创建BeautifulSoup对象,创建的同时就将整个文档字符串下载成一个DOM树,后根据这个DOM树搜索节点。find_all方法搜索出所有满足的节点,find方法只会搜索出第一个满足的节点,两方法参数一致。搜索出节点后就可以访问节点的名称、属性、文字。因此在搜索时也可以按照以上三项搜索。 from bs4 import BeautifulSoup #根据HTML网页字符串创建BeautifulSoup对象 soup = BeautifulSoup( html_doc, #HTML文档字符串 ‘html.parser’ #HTML解析器 from_encoding=‘utf8’#HTML文档的编码 ) 搜索节点: find_all(name,attrs,string)#方法 soup.find_all(‘a’)#查找所有标签为a的节点 #查找所有标签为a,链接符合/view/123.htm形式的节点 soup.find_all(‘a’,href=‘/view/123.htm’) soup.find_all(‘a’,href=re.compile(r‘/view/\d+\.htm’)) #查找所有标签为div,class为‘abc’,文字为Python的节点 soup.find_all(‘div’,class_=‘abc’,string=‘Python’) #_是因为dom中有class 访问节点信息 #得到节点:<a href=‘1.html’>Python</a> #获取查找到的节点的标签名称 node.name #获取查找的a节点的href属性 node['href'] #获取查找到的a节点的链接文字 node.get_text()
    查看全部
  • URL管理器:管理待抓取URL集合和已抓取URL集合 防止重复抓取、防止循环抓取 功能: 1.判断待添加URL是否在容器中 2.添加新URL到待爬取集合 3.判断是否有待爬取URL 4.获取待爬取URL 5.将URL从待爬取移动至已爬取
    查看全部
  • mac的快捷键为command+1,选择create method
    查看全部
    1 采集 收起 来源:调度程序

    2017-06-28

  • 1.到http://www.crummy.com/software/BeautifulSoup/网站上上下载,最新版本是4.6.0。 2.下载完后解压,放到python下。 3.cmd,切换到C:/Python27/beautifulsoup4-4.6.0/目录下(根据自己解压后的目录和下载的版本号修改) cd C:/Python27/beautifulsoup4-4.6.0 4.运行命令 setup.py build setup.py install 源自 http://kevinkelly.blog.163.com/blog/static/21390809320133185748442/
    查看全部
  • python 3.x无法输出中文 open('output.html', 'w', encoding='utf-8') 这样设置后可以输出 如果root_url中包含中文得通过urllib.parse.quote()转换 urllib.parse.quote('http://baike.baidu.com/item/中文/129156', safe='/:')
    查看全部
  • HTML标准DOM树
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python语言开发的高级课程 1、Python编程语法; 2、HTML语言基础知识; 3、正则表达式基础知识;
老师告诉你能学到什么?
1、爬虫技术的含义和存在价值 2、爬虫技术架构 3、组成爬虫的关键模块:URL管理器、HTML下载器和HTML解析器 4、实战抓取百度百科1000个词条页面数据的抓取策略设定、实战代码编写、爬虫实例运行 5、一套极简的可扩展爬虫代码,修改本代码,你就能抓取任何互联网网页!

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!