Python实现的爬虫功能代码


Posted in Python onJune 24, 2017

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

主要用到urllib2、BeautifulSoup模块

#encoding=utf-8
import re
import requests
import urllib2
import datetime
import MySQLdb
from bs4 import BeautifulSoup
import sys
reload(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="(.*?)"',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="(.*?)"',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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
python定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
Python3 log10()函数简单用法
Feb 19 Python
详解python校验SQL脚本命名规则
Mar 22 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
wxPython实现绘图小例子
Nov 19 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
python中threading开启关闭线程操作
May 02 Python
python周期任务调度工具Schedule使用详解
Nov 23 Python
python3操作mysql数据库的方法
Jun 23 #Python
Python 中pandas.read_excel详细介绍
Jun 23 #Python
python3.4用函数操作mysql5.7数据库
Jun 23 #Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 #Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 #Python
Python数据操作方法封装类实例
Jun 23 #Python
Python守护线程用法实例
Jun 23 #Python
You might like
PHP操作文件方法问答
2007/03/16 PHP
php define的第二个参数使用方法
2013/11/04 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
js arguments对象应用介绍
2012/11/28 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python中常见的异常总结
2018/02/20 Python
python多线程与多进程及其区别详解
2019/08/08 Python
python支持多线程的爬虫实例
2019/12/21 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
中医专业应届生求职信
2013/11/17 职场文书
文科教师毕业的自我评价
2014/01/16 职场文书
房地产广告词大全
2014/03/19 职场文书
治安消防安全责任书
2014/07/23 职场文书
琅琊山导游词
2015/02/05 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书