Python 爬虫web网页版程序代码

一:网页结构分析

二:代码实战

#! /usr/bin/env python2

# encoding=utf-8

#BeautifulSoup需要安装 MySQLdb

import sys,os,re,hashlib

import urllib

import httplib2

from lxml import etree

import MySQLdb

from BeautifulSoup import BeautifulSoup

import urllib2

import re

import time

reload(sys)

from datetime import datetime as dt,timedelta

import re

 

h=httplib2.Http(timeout=10)

#设置请求http头 模拟伪装 浏览器

headers={

    'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'

}

#正则匹配a标签

pattern = '<a.*?href="(.+)".*?>(.*?)</a>'

#日志记录

log_path='./sporttery'

log_file='%s.log' % dt.now().strftime('%Y-%m-%d')

if not os.path.exists(log_path):

    os.makedirs(log_path)

log=open('%s/%s' % (log_path,log_file),'w+')

 

#python操作mysql数据库

conn= MySQLdb.connect(

        host='localhost',

        port = 3306,

        user='root',

        passwd='root',

        db ='test',

        )

conn.set_character_set('utf8')

cur = conn.cursor()

cur.execute('SET NAMES utf8;')

cur.execute('SET CHARACTER SET utf8;')

cur.execute('SET character_set_connection=utf8;')

cur.close()

 

#获取请求链接内容 失败再次执行

def download(url):

    fails = 0

    while True:

        if fails>5:return None

        try:

            res,content = h.request(url,'GET',headers=headers)

            return  content.decode('utf-8','ignore')

        except:

            print(u'打开链接失败'+url)

            fails +=1

#字符串截取方法 

def GetMiddleStr(content,startStr,endStr):

  startIndex = content.index(startStr)

  if startIndex>=0:

    startIndex += len(startStr)

  endIndex = content.index(endStr)

  return content[startIndex:endIndex]

def get_ul(data):

    mystring=GetMiddleStr(data,'<ul class="cenicon">','<div class="clear hed"></div>')

    return mystring

 

def test_sporttery(i):

    url='http://www.xxx.com/video/video_%E8%B6%B3%E7%90%83%E9%AD%94%E6%96%B9_'+str(i)+'.html'

    print url

    #http://www.xxx.com/video/video_%E8%B6%B3%E7%90%83%E9%AD%94%E6%96%B9_2.html

    source=download(url)

    data=get_ul(source)

    datas=data.split('<li>')

    for each in datas:

        ret=re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" ,each)

        for urls in ret:

            detial=download(urls)

            if detial:

                detial_content=GetMiddleStr(detial,'createFlashVideo','m3u8').replace(' ', '')

                if detial_content:

                    end_url_rex=GetMiddleStr(detial_content+".m3u8",'http://','.m3u8')+"m3u8"

                    #最终的url

                    #title

                    sstree = etree.HTML(detial)

                    ssnodes = sstree.xpath('//*[@id="playVideo"]/div[1]/h2')

                    for ssn in ssnodes:

                        name= ssn.text.strip().replace('/h2>', '')

                    #title=GetMiddleStr(detial,'<h3','</h3>').replace(' ', '')

                    #简介

                    introduction=GetMiddleStr(detial,'video-info">','<!-- /.w1000 -->').replace(' ', '')

                    dr = re.compile(r'<[^>]+>',re.S)

                    introductions = dr.sub('',introduction)

                    end_content=introductions.strip().replace('/span>', '')

                    end_time= time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()+8*60*60))

                    #end_times=dt.now().strftime('%Y-%m-%d %H:%i:%S')

                    saveDB(urls,end_url_rex,name,end_content,str(i),end_time)

 

 

def saveDB(current_url,end_url_rex,names,end_content,page,create_time):

    #添加select update

    sql = 'INSERT INTO test.mytables(current_url,end_url_rex,`names`,end_content,page,create_time)\

            VALUES (%s,%s,%s,%s,%s,%s)'

    print sql

    cur = conn.cursor()

    cur.execute(sql,(current_url,end_url_rex,names,end_content,page,create_time))

    cur.close()

    conn.commit()

 

if __name__ == '__main__':

     first="http://www.xxx.com/video/video_%E8%B6%B3%E7%90%83%E9%AD%94%E6%96%B9_1.html"

     url = urllib2.urlopen(first)

     content = url.read()

     soup = BeautifulSoup(content)

     strs=soup.findAll(attrs={"class":"pagination"})

     lists=str(strs[0])

     listss=re.findall(r'\d+',lists)

     count=len(listss)

     list_string = list(set(listss))

     str_num= list_string[-1]

     i = 1

     while i <= int(str_num):

           test_sporttery(i)

           i += 1

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python网页爬虫代码、python web爬虫、python爬虫代码、python爬虫动态网页、python 网页爬虫,以便于您获取更多的相关知识。

时间: 2024-09-14 04:47:22

Python 爬虫web网页版程序代码的相关文章

用python爬虫登陆网页时网页的重定向问题

问题描述 用python爬虫登陆网页时网页的重定向问题 用python爬虫登陆一个网站 用urlopen打开后 打印获得的内容发现返回的一直是登陆界面 检查了cookie,表单内容的编码都是正确的 在网页上登陆后抓包发现返回的是一个302重定向 这个重定向是导致返回内容一直是登陆界面的原因吗?如果是的话应该怎么处理? 解决方案 注意cookie的问题,参考:http://lilydjwg.is-programmer.com/posts/22121.htmlhttp://iyuan.iteye.c

javascript html实现网页版日历代码_javascript技巧

本文实例为大家分享了网页版日历代码,供大家参考,具体内容如下 效果图: 实现代码: <html> <head> <link rel="stylesheet" type="text/css" href="Skin.css"> <style> <!-- table{ text-align: center } --> </style> </head> <body&

Python中删除文件的程序代码_python

Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用.它具有简单.易学.免费.开源.可移植性.解释性.面向对象.可扩展性.可嵌入性以及丰富的库等特性,目前的应用范围也非常广泛,如系统编程.图像处理.数据库编程等方面. Python开发者可以使用文本编辑器(如Windows的记事本等)或者专业的IDE(集成开发环境)来编写程序代码.IDE使得开发者可

C#实现通过程序自动抓取远程Web网页信息的代码_C#教程

通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序.比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名.分析系统在根据得到的数据进行数据分析.为业务提供参考数据. 为了完成以上的需求,我们就需要模拟浏览器浏览网页,得到页面的数据在进行分析,最后把分析的结构,即整理好的数据写入数据库.那么我们的思路就是: 1.发送HttpRequest请求. 2.接收HttpResponse返回的结果.得到特定页面的html源文件. 3.取出包含数据的那一部分源码. 4.根据html源码生成HtmlD

python爬虫中文网页cmd打印出错问题解决

问题描述 用python写爬虫,很多时候我们会先在cmd下先进行尝试. 运行爬虫之后,肯定的,我们想看看爬取的结果. 于是,我们print... 运气好的话,一切顺利.但这样的次数不多,更多地,我们会遇到这样的错误: UnicodeEncodeError: 'gbk' codec can't encode character 好吧,回去检查网页的编码格式:gb2312 代码中也添加了:r.encoding = 'gb2312' 看不出哪里出了问题,应该没问题的啊! 代码如下: import re

用ASP编程控制在IIS建立Web站点的程序代码

'*****************************************************  ' 创建一个WebServer  ' 必须参数:WRoot,为创建站点的物理目录:WComment为站点说明:WPort为站点端口:ServerRun为是否自动运行  ' 当创建成功时返回1,失败时提示退出并返回0,当创建站点成功但启动失败时返回2  '******************************************************  '   '******

JavaScript计算器网页版实现代码分享_javascript技巧

JavaScript网页计算器代码,该计算器是用DW写的!HTML篇 <html <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>计算器</title> <link href="style/calculator.css" rel="stylesheet&quo

Python抓取远程图片程序代码

 代码如下 复制代码 #!/usr/bin/python import re import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.*?\.jpg)"' imgre = re.compile(reg) imglist = re.findall(imgre,html) x = 0 for imgur

python文件读写操作简单程序代码

例子 python写文件  代码如下 复制代码 object_id_list=[1, 3, 88, 99] f=open('mylist', "w") for id in object_id_list:     f.writelines(str(id)) f.close()   #只有输入这一句之后才会真正写入到文件中 cat mylist 138899%   # 最后有一个%表示没有换行 >>> object_id_list=[1, 3, 88, 99] >&