使用urllib请求页面,使用BeautifulSoup解析页面,使用xlwt3写入Excel

  1. import urllib.request
  2. from bs4 import BeautifulSoup
  3. import time
  4. import xlwt3
  5. from xlrd import open_workbook
  6. wExcel=xlwt3.Workbook()
  7. sheet1=wExcel.add_sheet('my',cell_overwrite_ok=True)
  8. num=0
  9. fo=open(r'contents.txt','a',encoding='utf-8')
  10. def getconten(url):
  11. opener = urllib.request.build_opener()
  12. try:
  13. content = opener.open(url).read()
  14. content2=content.decode('utf-8')
  15. except:
  16. try:
  17. content = opener.open(url).read()
  18. content2=content.decode('gbk')
  19. except:
  20. print('decode fail!')
  21. return None
  22. return None
  23. return content2
  24. def getdetail(url):
  25. opener = urllib.request.build_opener()
  26. con=getconten(url)
  27. ## print(url)
  28. if con:
  29. soup=BeautifulSoup(con)
  30. job=soup.find('div','bbs-content clearfix')
  31. if job:
  32. jobdetail=job.get_text()
  33. return jobdetail
  34. else:
  35. return None
  36. def getonepage(url):
  37. global num
  38. opener = urllib.request.build_opener()
  39. content=getconten(url)
  40. if content:
  41. soup=BeautifulSoup(content)
  42. for tr in soup.find_all('tr','bg'):
  43. oneitem=[]
  44. j=0
  45. detailurl=tr.td.a['href']
  46. detailurl='http://bbs.tianya.cn'+detailurl
  47. ## print(detailurl)
  48. detailcon=getdetail(detailurl)
  49. ## print(detailcon)
  50. for item in tr.strings:
  51. item=item.strip()
  52. if item:
  53. oneitem.append(item)
  54. sheet1.write(num,j,item)
  55. j=j+1
  56. ## print(item.strip())
  57. sheet1.write(num,j,detailcon)
  58. num=num+1
  59. ## print('one is ok')
  60. if __name__=='__main__':
  61. mainpage='http://bbs.tianya.cn/list.jsp?item=763&sub=2'
  62. getonepage(mainpage)
  63. wExcel.save('res0.xls')
  64. i=0
  65. soup=BeautifulSoup(getconten(mainpage))
  66. currentpage=soup.find('div','links').a.find_next_sibling('a')
  67. currentpage='http://bbs.tianya.cn'+currentpage['href']
  68. nextpage=currentpage
  69. while i<30:
  70. print(nextpage)
  71. getonepage(nextpage)
  72. print('one page finished!')
  73. con=getconten(nextpage)
  74. if con:
  75. soup=BeautifulSoup(con)
  76. currentpage=soup.find('div','links').a.find_next_sibling('a').find_next_sibling('a')
  77. nextpage='http://bbs.tianya.cn'+currentpage['href']
  78. i=i+1
  79. else:
  80. break
  81. wExcel.save('res.xls')

网络爬虫-python-爬取天涯求职贴的更多相关文章

  1. python网络爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在python3中的为urllib.request和urllib. ...

  2. Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  3. python网络爬虫--简单爬取糗事百科

    刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...

  4. Python网络爬虫_爬取Ajax动态加载和翻页时url不变的网页

    1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新 ...

  5. Python网络爬虫 | Scrapy爬取妹子图网站全站照片

    根据现有的知识,写了一个下载妹子图(meizitu.com)Scrapy脚本,把全站两万多张照片下载到了本地. 网站的分析 网页的网址分析 打开网站,发现网页的网址都是以 http://www.mei ...

  6. python3编写网络爬虫19-app爬取

    一.app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供Web页面端的服务,而是直接开发了App,更多信息都是通过App展示的 App爬取相比Web端更加容易 ...

  7. 零基础爬虫----python爬取豆瓣电影top250的信息(转)

    今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...

  8. 【Python爬虫案例学习】Python爬取天涯论坛评论

    用到的包有requests - BeautSoup 我爬的是天涯论坛的财经论坛:'http://bbs.tianya.cn/list.jsp?item=develop' 它里面的其中的一个帖子的URL ...

  9. 复仇者联盟3热映,我用python爬取影评告诉你它都在讲什么

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  10. python爬取网站数据保存使用的方法

    这篇文章主要介绍了使用Python从网上爬取特定属性数据保存的方法,其中解决了编码问题和如何使用正则匹配数据的方法,详情看下文     编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这 ...

随机推荐

  1. logstash multi pipeline的使用

    logstash multi pipeline的使用 一.背景 二.解决方案 1.方案一: 2.方案二: 3.方案三: 三.实现步骤 1.编写 pipeline 文件 1.从文件收集,输出到控制台 2 ...

  2. 玩转C语言链表-链表各类操作详解

    链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个"头指针"变量,以head表示,它存放一个地址.该地址指向一个元素 ...

  3. Python中Numpy及Matplotlib使用

    Python中Numpy及Matplotlib使用 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以 ...

  4. 第01课 OpenGL窗口(3)

    接下来的代码段创建我们的OpenGL窗口.我花了很多时间来做决定是否创建固定的全屏模式这样不需要许多额外的代码,还是创建一个容易定制的友好的窗口但需要更多的代码.当然最后我选择了后者.我经常在EMai ...

  5. cf Two Sets (我用二分最大匹配做的)

    题意: n个数p1,p2....pn     两个数a,b 把它们分成A,B两个集合. 若x属于A,a-x一定属于A. 若x属于B,b-x一定属于B. 问是否可能将这n个数分成两个集合.若可以,输出每 ...

  6. Docker安装配置Tomcat

    1.使用docker pull tomcat下载镜像(不加tag则是下载最新版本) 2.运行容器(-d 后台运行:-p 指定端口映射),接的是镜像ID 3.进入容器执行命令,接的是容器ID 4.宿主机 ...

  7. 更优于 Shellinabox 的 web shell 工具 -- ttyd

    ttyd 是一个运行在服务端,客户端通过web浏览器访问从而连接后台 tty (pts伪终端)接口的程序,把 shell 终端搬到 web 浏览器中. WebSocket WebSocket 是 HT ...

  8. linux网络编程 IO多路复用 select epoll

    本文以我的小型聊天室为例,对于服务器端的代码,做了三次改进,我将分别介绍阻塞式IO,select,epoll . 一:阻塞式IO 对于聊天室这种程序,我们最容易想到的是在服务器端accept之后,然后 ...

  9. CSS px的理解

    px是像素.然而一个屏幕像素的多少是由屏幕的分辨率决定的. 取个极端的栗子:如果分辨率是1w*1w,你设置一个100px宽的输入框,你只占屏幕的1/100,但是如果屏幕的分辨率是100*100,那么你 ...

  10. charles抓包修改请求参数发送新的请求

    打开charles -->选择请求右击选择compose---修改参数发送请求