当前位置: 首页 > news >正文

有经验的郑州网站建设石家庄做外贸网站建设

有经验的郑州网站建设,石家庄做外贸网站建设,电商网站价格监控,wordpress拼团之前看了一段有关爬虫的网课深有启发#xff0c;于是自己也尝试着如如何过去爬虫百科“python”词条等相关页面的整个过程记录下来#xff0c;方便后期其他人一起来学习。 抓取策略 确定目标#xff1a;重要的是先确定需要抓取的网站具体的那些部分#xff0c;下面实例是…之前看了一段有关爬虫的网课深有启发于是自己也尝试着如如何过去爬虫百科“python”词条等相关页面的整个过程记录下来方便后期其他人一起来学习。 抓取策略 确定目标重要的是先确定需要抓取的网站具体的那些部分下面实例是咦抓取百科python词条页面以及python有关页面的简介和标题。 分析目标分析要抓取的url的格式限定抓取范围。分析要抓取的数据的格式本实例中就要分析标题和简介这两个数据所在的标签的格式。分析要抓取的页面编码的格式在网页解析器部分要指定网页编码然后才能进行正确的解析。 编写代码在网页解析器部分要使用到分析目标得到的结果。 执行爬虫进行数据抓取。 分析目标 1、url格式 进入百科python词条页面页面中相关词条的链接比较统一大都是/view/xxx.htm。 2、数据格式 标题位于类lemmaWgt-lemmaTitle-title下的h1子标签简介位于类lemma-summary下。 3、编码格式 查看页面编码格式为utf-8。 经过以上分析得到结果如下 代码编写 项目结构 在sublime下新建文件夹baike-spider作为项目根目录。 新建spider_main.py作为爬虫总调度程序。 新建url_manger.py作为url管理器。 新建html_downloader.py作为html下载器。 新建html_parser.py作为html解析器。 新建html_outputer.py作为写出数据的工具。 具体代码示例 spider_main.py # coding:utf-8 import url_manager, html_downloader, html_parser, html_outputerclass SpiderMain(object):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 1self.urls.add_new_url(root_url)while self.urls.has_new_url():try: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)if count 10:breakcount count 1except:print(craw failed)self.outputer.output_html()if __name____main__:root_url http://baike.baidu.com/view/21087.htmobj_spider SpiderMain()obj_spider.craw(root_url)url_manger.py # coding:utf-8 class UrlManager(object):def __init__(self):self.new_urls set()self.old_urls set()def add_new_url(self, url):if url is None:returnif url not in self.new_urls and url not in self.old_urls:self.new_urls.add(url)def add_new_urls(self, urls):if urls is None or len(urls) 0:returnfor url in urls:self.add_new_url(url)def has_new_url(self):return len(self.new_urls) ! 0def get_new_url(self):new_url self.new_urls.pop()self.old_urls.add(new_url)return new_urlhtml_downloader.py # coding:utf-8 import urllib.requestclass HtmlDownloader(object):def download(self, url):if url is None:return Noneresponse urllib.request.urlopen(url)if response.getcode() ! 200:return Nonereturn response.read()html_parser.py # coding:utf-8 from bs4 import BeautifulSoup import re from urllib.parse import urljoinclass HtmlParser(object):def _get_new_urls(self, page_url, soup):new_urls set()# /view/123.htmlinks soup.find_all(a, hrefre.compile(r/view/\d\.htm))for link in links:new_url link[href]new_full_url urljoin(page_url, new_url)# print(new_full_url)new_urls.add(new_full_url)#print(new_urls)return new_urlsdef _get_new_data(self, page_url, soup):res_data {}# urlres_data[url] page_url# dd classlemmaWgt-lemmaTitle-title h1Python/h1title_node soup.find(dd, class_lemmaWgt-lemmaTitle-title).find(h1)res_data[title] title_node.get_text()# div classlemma-summary label-modulelemmaSummarysummary_node soup.find(div, class_lemma-summary)res_data[summary] summary_node.get_text()# print(res_data)return res_datadef parse(self, page_url, html_cont):if page_url is None or html_cont is None:returnsoup BeautifulSoup(html_cont, html.parser)# print(soup.prettify())new_urls self._get_new_urls(page_url, soup)new_data self._get_new_data(page_url, soup)# print(mark)return new_urls, new_datahtml_outputer.py # coding:utf-8 class HtmlOutputer(object):def __init__(self):self.datas []def collect_data(self, data):if data is None:returnself.datas.append(data)def output_html(self):fout open(output.html,w, encodingutf-8)fout.write(html)fout.write(body)fout.write(table)for data in self.datas:fout.write(tr)fout.write(td%s/td % data[url])fout.write(td%s/td % data[title])fout.write(td%s/td % data[summary])fout.write(/tr)fout.write(/table)fout.write(/body)fout.write(/html)fout.close()运行 在命令行下执行python spider_main.py。 编码问题 问题描述UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position … 使用Python写文件的时候或者将网络数据流写入到本地文件的时候大部分情况下会遇到这个问题。网络上有很多类似的文章讲述如何解决这个问题但是无非就是encodedecode相关的这是导致该问题出现的真正原因吗不是的。很多时候我们使用了decode和encode试遍了各种编码utf8utf-8gbkgb2312等等该有的编码都试遍了可是仍然出现该错误令人崩溃。 在windows下面编写python脚本编码问题很严重。将网络数据流写入文件时我们会遇到几个编码 1、#encoding’XXX’ 这里(也就是python文件第一行的内容)的编码是指该python脚本文件本身的编码无关紧要。只要XXX和文件本身的编码相同就行了。 比如notepad”格式”菜单里面里可以设置各种编码这时需要保证该菜单里设置的编码和encoding XXX相同就行了不同的话会报错。 2、网络数据流的编码 比如获取网页那么网络数据流的编码就是网页的编码。需要使用decode解码成unicode编码。 3、目标文件的编码 将网络数据流写入到新文件写文件代码如下 fout open(output.html,w) fout.write(str)在windows下面新文件的默认编码是gbkpython解释器会用gbk编码去解析我们的网络数据流str然而str是decode过的unicode编码这样的话就会导致解析不了出现上述问题。 解决的办法是改变目标文件的编码 fout open(output.html,w, encodingutf-8)
http://www.dnsts.com.cn/news/151685.html

相关文章:

  • 网站怎样建设网站套用模板
  • 国内做网站建设好的拼多多网站建设
  • 在大网站做网页广告需要多少钱中国科技成就ppt
  • uemo网站平台建设wordpress 安装php
  • 汕头企业制作网站推广怎么修改自己网站内容
  • 厦门网站制作系统庆阳网站建设公司
  • html5网站设计造价员报考官网
  • wordpress全站网易云音乐播放下载wordpress很慢
  • 网站建设交印花税股票app开发价格
  • 中国农村建设网站首页网页设计参考网站
  • 关于申请建设网站的请示网站做链接的意义是什么
  • 网站更换服务器 备案黄石网站建设多少钱
  • 金融投资风险公司网站源码如何开拓海外市场
  • 外贸网站品牌官网建设中国外贸网站排名
  • 建站成本网站建设学徒
  • 南昌企业建设网站设计下载可以做动漫的我的世界视频网站
  • 网站怎么做转发网络营销的功能是什么?
  • 如何了解和掌握一个网站的权重上海网商电子商务有限公司
  • 苏州网站建设如何选择wordpress各个页面名称标签
  • 网站视觉规范wordpress主题付费吗
  • 怎样去权重高的网站做外链加盟代理网
  • 做网站都要用到框架吗一个网站开发流程图
  • 网站服务器租网站建设和网袷宣传
  • 徐州网站建设昆明建设局官方网站
  • 网站营销学多久wordpress 模板 使用
  • 网站提示页面设计网站左侧分类菜单怎么做
  • 岳池网站制作flash 源码网站
  • 福州网站免费制作可道网站建设
  • 重庆 网站定制wordpress网站模板
  • 能看建设动漫黄图的网站网络服务器主要有