python2.7实现爬虫网页数据

这篇文章主要为大家详细介绍了python2.7实现爬虫网页数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近刚学习Python,做了个简单的爬虫,作为一个简单的demo希望帮助和我一样的初学者。

代码使用python2.7做的爬虫  抓取51job上面的职位名,公司名,薪资,发布时间等等。

直接上代码,代码中注释还算比较清楚 ,没有安装mysql需要屏蔽掉相关代码:

#!/usr/bin/python # -*- coding: UTF-8 -*-  from bs4 import BeautifulSoup import urllib import urllib2 import codecs import re import time import logging import MySQLdb   class Jobs(object):    # 初始化   """docstring for Jobs"""    def __init__(self):     super(Jobs, self).__init__()          logging.basicConfig(level=logging.DEBUG,          format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')     #数据库的操作,没有mysql可以做屏蔽     self.db = MySQLdb.connect('127.0.0.1','root','rootroot','MySQL_Test',charset='utf8')     self.cursor = self.db.cursor()      #log日志的显示     self.logger = logging.getLogger("sjk")      self.logger.setLevel(level=logging.DEBUG)      formatter = logging.Formatter(       '%(asctime)s - %(name)s - %(levelname)s - %(message)s')     handler = logging.FileHandler('log.txt')     handler.setFormatter(formatter)     handler.setLevel(logging.DEBUG)     self.logger.addHandler(handler)      self.logger.info('初始化完成')    # 模拟请求数据   def jobshtml(self, key, page='1'):     try:       self.logger.info('开始请求第' + page + '页')       #网页url       searchurl = "https://search.51job.com/list/040000,000000,0000,00,9,99,{key},2,{page}.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare="        user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0'       #设置请求头       header = {'User-Agent': user_agent, 'Host': 'search.51job.com',            'Referer': 'https://www.51job.com/'}       #拼接url       finalUrl = searchurl.format(key=key, page=page)              request = urllib2.Request(finalUrl, headers=header)        response = urllib2.urlopen(request)       #等待网页加载完成       time.sleep(3)       #gbk格式解码       info = response.read().decode('gbk')        self.logger.info('请求网页网页')        self.decodeHtml(info=info, key=key, page=page)      except urllib2.HTTPError as e:       print e.reason    # 解析网页数据   def decodeHtml(self, info, key, page):     self.logger.info('开始解析网页数据')     #BeautifulSoup 解析网页     soup = BeautifulSoup(info, 'html.parser')     #找到class = t1 t2 t3 t4 t5 的标签数据     ps = soup.find_all(attrs={"class": re.compile(r'^t[1-5].*')})     #打开txt文件 a+ 代表追加     f = codecs.open(key + '.txt', 'a+', 'UTF-8')     #清除之前的数据信息     f.truncate()      f.write('------------' + page + '--------------')      count = 1      arr = []     #做一些字符串的处理,形成数据格式  iOS开发工程师 有限公司 深圳-南山区 0.9-1.6万/月 05-16     for pi in ps:       spe = " "       finalstr = pi.getText().strip()       arr.append(finalstr)       if count % 5 == 0:         #每一条数据插入数据库,如果没有安装mysql 可以将当前行注释掉         self.connectMySQL(arr=arr)         arr = []         spe = ""       writestr = finalstr + spe       count += 1       f.write(writestr)     f.close()          self.logger.info('解析完成')  #数据库操作 没有安装mysql 可以屏蔽掉   def connectMySQL(self,arr):     work=arr[0]     company=arr[1]     place=arr[2]     salary=arr[3]     time=arr[4]      query = "select * from Jobs_tab where      company_name='%s' and work_name='%s' and work_place='%s'      and salary='%s' and time='%s'" %(company,work,place,salary,time)     self.cursor.execute(query)      queryresult = self.cursor.fetchall()     #数据库中不存在就插入数据 存在就可以更新数据 不过我这边没有写     if len(queryresult) > 0:       sql = "insert into Jobs_tab(work_name,company_name,work_place,salary           ,time) values('%s','%s','%s','%s','%s')" %(work,company,place,salary,time)              try:         self.cursor.execute(sql)         self.db.commit()                except Exception as e:         self.logger.info('写入数据库失败')         #模拟登陆   # def login(self):   #   data = {'action':'save','isread':'on','loginname':'18086514327','password':'kui4131sjk'}     # 开始抓取 主函数   def run(self, key):      # 只要前5页的数据 key代表搜索工做类型 这边我是用的ios page是页数     for x in xrange(1, 6):       self.jobshtml(key=key, page=str(x))      self.logger.info('写入数据库完成')      self.db.close()  if __name__ == '__main__':    Jobs().run(key='iOS')

登录后复制

立即学习“Python免费学习笔记(深入)”;

这样抓取网页数据格式如下:

python2.7实现爬虫网页数据

相关推荐:

python实现爬虫下载美女图片

python实现爬虫下载漫画示例

立即学习“Python免费学习笔记(深入)”;

以上就是python2.7实现爬虫网页数据的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2262042.html

(0)
上一篇 2025年2月27日 06:41:31
下一篇 2025年2月24日 15:59:57

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • win7下怎么安装python2.7?

    python2.7的安装是学习python语言的前提,下面本篇文章给大家介绍win7系统下如何安装python2.7,以及环境变量如何配置和对安装的验证,希望对你们有所帮助。 一、下载Python 进入下载地址:https://www.py…

    2025年2月27日 编程技术
    200
  • 爬虫能获取什么样的数据和具体的解析方式

    随着互联网的飞速发展,越来越多的数据充斥着这个时代。而获取和处理数据就成为我们生活中必不可少的部分,爬虫也是应运而生。 众多语言都能进行爬虫,但基于python的爬虫显得更加简洁,方便。爬虫也成了python语言中必不可少的一部分。那我们通…

    2025年2月27日
    200
  • python2.7和3.5兼容吗

    由于历史原因,python有两个大的版本分支,python2和python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装python2和python3,因此如何让两个版本的python兼容,如何让脚本在对应的python版本上…

    2025年2月27日 编程技术
    200
  • Python实时数据采集-新型冠状病毒

    Python实时数据采集-新型冠状病毒 源代码 来源:https://github.com/programming-with-love/2019-ncov 疫情数据时间为:2020.2.1 项目相关截图: 全国数据展示 立即学习“Pytho…

    2025年2月26日 编程技术
    200
  • 基于python如何实现计算两组数据P值

    我们在做A/B试验评估的时候需要借助p_value,这篇文章记录如何利用python计算两组数据的显著性。 一、代码 # TTest.py# -*- coding: utf-8 -*-”’# Created on 2020-05-20 2…

    2025年2月26日
    200
  • 使用Python快速搭建接口自动化测试脚本实战总结

    ​测试需求介绍 通常,在我们的项目中,我们的接口测试需求一般都是构造不同的请求数据,然后发送请求到接口,拿到接口返回后,对返回的字段进行提取和校验,最后将结果存放在excel表格中方便查阅。接口一般是http或https请求,发送的结构一般…

    2025年2月26日 编程技术
    200
  • 聊一聊Python 实现数据的序列化操作

    ​在日常开发中,对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块。这两个模块主要区别如下: json 是一个文本序列化格式,而 pickle 是一…

    2025年2月26日
    200
  • 使用Python构建电影推荐系统

    在日常数据挖掘工作中,除了会涉及到使用Python处理分类或预测任务,有时候还会涉及推荐系统相关任务。 推荐系统用于各个领域,常见的例子包括视频和音乐服务的播放列表生成器、在线商店的产品推荐器或社交媒体平台的内容推荐器。在这个项目中,我们创…

    2025年2月26日 编程技术
    200
  • Python 绘制惊艳的桑基图,你学会了吗?

    桑基图简介 很多时候,我们需要一种必须可视化数据如何在实体之间流动的情况。例如,以居民如何从一个国家迁移到另一个国家为例。这里演示了有多少居民从英格兰迁移到北爱尔兰、苏格兰和威尔士。 从这个 桑基图 (Sankey)可视化中可以明显看出,从…

    2025年2月26日 编程技术
    200
  • 为了在上海租房,我用Python连夜爬了20000多条房源信息

    最近由于工作突然变动,新的办公地点离现在的住处很远,必须要换房子租了。 我坐上中介的小电驴,开始探索城市各处的陌生角落。 在各个租房app之间周转的过程中,我属实有些焦头烂额,因为效率真的很低下: 首先,因为跟女友住在一起,需要同时考虑两人…

    2025年2月26日 编程技术
    200

发表回复

登录后才能评论