侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python实现的爬虫功能代码

Python  /  管理员 发布于 7年前   178

本文实例讲述了Python实现的爬虫功能。分享给大家供大家参考,具体如下:

主要用到urllib2、BeautifulSoup模块

#encoding=utf-8import reimport requestsimport urllib2import datetimeimport MySQLdbfrom bs4 import BeautifulSoupimport sysreload(sys)sys.setdefaultencoding("utf-8")class Splider(object):  def __init__(self):  print u'开始爬取内容...'  ##用来获取网页源代码  def getsource(self,url):  headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2652.0 Safari/537.36'}  req = urllib2.Request(url=url,headers=headers)  socket = urllib2.urlopen(req)  content = socket.read()  socket.close()  return content  ##changepage用来生产不同页数的链接  def changepage(self,url,total_page):    now_page = int(re.search('page/(\d+)',url,re.S).group(1))  page_group = []  for i in range(now_page,total_page+1):    link = re.sub('page/(\d+)','page/%d' % i,url,re.S)    page_group.append(link)  return page_group  #获取字内容  def getchildrencon(self,child_url):  conobj = {}  content = self.getsource(child_url)  soup = BeautifulSoup(content, 'html.parser', from_encoding='utf-8')  content = soup.find('div',{'class':'c-article_content'})  img = re.findall('src="https:/article/(.*?)"',str(content),re.S)  conobj['con'] = content.get_text()  conobj['img'] = (';').join(img)  return conobj  ##获取内容  def getcontent(self,html_doc):  soup = BeautifulSoup(html_doc, 'html.parser', from_encoding='utf-8')  tag = soup.find_all('div',{'class':'promo-feed-headline'})  info = {}  i = 0  for link in tag:    info[i] = {}    title_desc = link.find('h3')    info[i]['title'] = title_desc.get_text()    post_date = link.find('div',{'class':'post-date'})    pos_d = post_date['data-date'][0:10]    info[i]['content_time'] = pos_d    info[i]['source'] = 'whowhatwear'    source_link = link.find('a',href=re.compile(r"section=fashion-trends"))    source_url = 'http://www.whowhatwear.com'+source_link['href']    info[i]['source_url'] = source_url    in_content = self.getsource(source_url)    in_soup = BeautifulSoup(in_content, 'html.parser', from_encoding='utf-8')    soup_content = in_soup.find('section',{'class':'widgets-list-content'})    info[i]['content'] = soup_content.get_text().strip('\n')    text_con = in_soup.find('section',{'class':'text'})    summary = text_con.get_text().strip('\n') if text_con.text != None else NULL    info[i]['summary'] = summary[0:200]+'...';    img_list = re.findall('src="https:/article/(.*?)"',str(soup_content),re.S)    info[i]['imgs'] = (';').join(img_list)    info[i]['create_time'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")    i+=1  #print info  #exit()  return info  def saveinfo(self,content_info):  conn = MySQLdb.Connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='test',charset='utf8')  cursor = conn.cursor()  for each in content_info:    for k,v in each.items():    sql = "insert into t_fashion_spider2(`title`,`summary`,`content`,`content_time`,`imgs`,`source`,`source_url`,`create_time`) values ('%s','%s','%s','%s','%s','%s','%s','%s')" % (MySQLdb.escape_string(v['title']),MySQLdb.escape_string(v['summary']),MySQLdb.escape_string(v['content']),v['content_time'],v['imgs'],v['source'],v['source_url'],v['create_time'])    cursor.execute(sql)  conn.commit()  cursor.close()  conn.close()if __name__ == '__main__':  classinfo = []  p_num = 5  url = 'http://www.whowhatwear.com/section/fashion-trends/page/1'  jikesplider = Splider()  all_links = jikesplider.changepage(url,p_num)  for link in all_links:  print u'正在处理页面:' + link  html = jikesplider.getsource(link)  info = jikesplider.getcontent(html)  classinfo.append(info)  jikesplider.saveinfo(classinfo)

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


  • 上一条:
    Python实现好友全头像的拼接实例(推荐)
    下一条:
    python3操作mysql数据库的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中实现字符串可逆性压缩及解压缩功能(0个评论)
    • 使用go + gin + jwt + qrcode实现网站生成登录二维码在app中扫码登录功能(0个评论)
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客