三个python爬虫项目实例代码


Posted in Python onDecember 28, 2019

这篇文章主要介绍了三个python爬虫项目实例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

爬取内涵段子:

#encoding=utf-8
import urllib2

import re


class neihanba():
  def spider(self):
    '''
    爬虫的主调度器
    '''
    isflow=True#判断是否进行下一页
    page=1
    while isflow:
      url="http://www.neihanpa.com/article/list_5_"+str(page)+".html"
      html=self.load(url)
      self.deal(html,page)
      panduan=raw_input("是否继续(y/n)!")
      if panduan=="y":
        isflow=True
        page+=1
      else:
        isflow=False
  def load(self,url):
    '''
    针对url地址进行全部爬去
    :param url: url地址
    :return: 返回爬去的内容
    '''
    header = {
      "User-Agent": " Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"
    }
    request = urllib2.Request(url, headers=header)
    response = urllib2.urlopen(request)
    html = response.read()
    return html
  def deal(self,html,page):
    '''
    对之前爬去的内容进行正则匹配,匹配出标题和正文内容
    :param html:之前爬去的内容
    :param page: 正在爬去的页码
    '''
    parrten=re.compile('<li class="piclist\d+">(.*?)</li>',re.S)
    titleList=parrten.findall(html)
    for title in titleList:
      parrten1=re.compile('<a href="/article/\d+.html" rel="external nofollow" >(.*)</a>')
      ti1=parrten1.findall(title)
      parrten2=re.compile('<div class="f18 mb20">(.*?)</div>',re.S)
      til2=parrten2.findall(title)
      for t in ti1:
        tr=t.replace("<b>","").replace("</b>","")
        self.writeData(tr,page)
      for t in til2:
        tr=t.replace("<p>","").replace("</p>","").replace("<br>","").replace("<br />","").replace("&ldquo","\"").replace("&rdquo","\"")
        self.writeData(tr,page)
  def writeData(self,context,page):
    '''
    将最终爬去的内容写入文件中
    :param context: 匹配好的内容
    :param page: 当前爬去的页码数
    '''
    fileName = "di" + str(page) + "yehtml.txt"
    with open(fileName, "a") as file:
      file.writelines(context + "\n")
if __name__ == '__main__':
  n=neihanba()
  n.spider()

爬取智联:

#encoding=utf-8
import urllib
import urllib2

import re


class zhiLian():
  def spider(self,position,workPlace):
    '''
    爬虫的主调度器
    :param position: 职位
    :param workPlace: 工作地点
    '''
    url="http://sou.zhaopin.com/jobs/searchresult.ashx?"
    url+=urllib.urlencode({"jl":workPlace})
    url+="&"
    url+=urllib.urlencode({"kw":position})
    isflow=True#是否进行下一页的爬去
    page=1
    while isflow:
      url+="&"+str(page)
      html=self.load(url)
      self.deal1(html,page)
      panduan = raw_input("是否继续爬虫下一页(y/n)!")
      if panduan == "y":
        isflow = True
        page += 1
      else:
        isflow = False
  def load(self,url):
    '''
    针对url地址进行全部爬去
    :param url: url地址
    :return: 返回爬去的内容
    '''
    header = {
      "User-Agent": " Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"
    }
    request = urllib2.Request(url, headers=header)
    response = urllib2.urlopen(request)
    html = response.read()
    return html
  def deal1(self,html,page):
    '''

    对之前爬去的内容进行正则匹配,匹配职位所对应的链接
    :param html:之前爬去的内容
    :param page: 正在爬去的页码
    '''
    parrten=re.compile('<a\s+style="font-weight:\s+bold"\s+par="ssidkey=y&ss=\d+&ff=\d+&sg=\w+&so=\d+"\s+href="(.*?)" rel="external nofollow" target="_blank">.*?</a>',re.S)
    til=parrten.findall(html)#爬去链接
    for t in til:
      self.deal2(t,page)
  def deal2(self,t,page):
    '''
    进行二次爬虫,然后在新的页面中对公司、薪资、工作经验进行匹配
    :param t: url地址
    :param page: 当前匹配的页数
    '''
    html=self.load(t)#返回二次爬虫的内容
    parrten1=re.compile('<a\s+onclick=".*?"\s+href=".*?" rel="external nofollow" \s+target="_blank">(.*?)\s+.*?<img\s+class=".*?"\s+src=".*?"\s+border="\d+"\s+vinfo=".*?"></a>',re.S)
    parrten2=re.compile('<li><span>职位月薪:</span><strong>(.*?) <a.*?>.*?</a></strong></li>',re.S)
    parrent3=re.compile('<li><span>工作经验:</span><strong>(.*?)</strong></li>',re.S)
    til1=parrten1.findall(html)
    til2=parrten2.findall(html)
    til3=parrent3.findall(html)
    str=""
    for t in til1:
      t=t.replace('<img title="专属页面" src="//img03.zhaopin.cn/2012/img/jobs/icon.png" border="0" />',"")
      str+=t
      str+="\t"
    for t in til2:
      str+=t
      str += "\t"
    for t in til3:
      str+=t
    self.writeData(str,page)
  def writeData(self,context,page):
    '''
    将最终爬去的内容写入文件中
    :param context: 匹配好的内容
     :param page: 当前爬去的页码数
    '''
    fileName = "di" + str(page) + "yehtml.txt"
    with open(fileName, "a") as file:
      file.writelines(context + "\n")
if __name__ == '__main__':
  position=raw_input("请输入职位:")
  workPlace=raw_input("请输入工作地点:")
  z=zhiLian()
  z.spider(position,workPlace)

爬取贴吧:

#encoding=utf-8
import urllib
import urllib2

import re


class teiba():
  def spider(self,name,startPage,endPage):
    url="http://tieba.baidu.com/f?ie=utf-8&"
    url+=urllib.urlencode({"kw":name})
    for page in range(startPage,endPage+1):
      pn=50*(page-1)
      urlFull=url+"&"+urllib.urlencode({"pn":pn})
      html=self.loadPage(url)
      self.dealPage(html,page)

  def loadPage(self,url):
    header={
      "User-Agent":" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"
    }
    request=urllib2.Request(url,headers=header)
    response=urllib2.urlopen(request)
    html=response.read()
    return html
  def dealPage(self,html,page):
    partten=re.compile(r'<a\s+rel="noreferrer"\s+href="/p/\d+" rel="external nofollow" \s+title=".*?"\s+target="_blank" class="j_th_tit\s+">(.*?)</a>',re.S)
    titleList=partten.findall(html)
    rstr=r'<span\s+class="topic-tag"\s+data-name=".*?">#(.*?)#</span>'
    for title in titleList:
      title=re.sub(rstr,"",title)
      self.writePage(title,page)
  def writePage(self,context,page):
    fileName="di"+str(page)+"yehtml.txt"
    with open(fileName,"a") as file:
      file.writelines(context+"\n")
if __name__ == '__main__':
  name=raw_input("请输入贴吧名:")
  startPage=raw_input("请输入起始页:")
  endPage=raw_input("请输入终止页:")
  t=teiba()
  t.spider(name,int(startPage),int(endPage))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析Python的Django框架中的Memcached
Jul 23 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
Python设计模式之外观模式实例详解
Jan 17 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
Python配置文件处理的方法教程
Aug 29 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
使用python实现回文数的四种方法小结
Nov 24 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
python scrapy重复执行实现代码详解
Dec 28 #Python
Python统计时间内的并发数代码实例
Dec 28 #Python
如何基于python实现脚本加密
Dec 28 #Python
python使用配置文件过程详解
Dec 28 #Python
python正则表达式匹配IP代码实例
Dec 28 #Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 #Python
python爬虫添加请求头代码实例
Dec 28 #Python
You might like
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
PHP 加密与解密的斗争
2009/04/17 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
创建Django项目图文实例详解
2019/06/06 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
竞选部门副经理的自荐书范文
2014/02/11 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
社区护士演讲稿
2014/08/27 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
埃及王子观后感
2015/06/16 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python