python 使用selenium和requests爬取页面数据

目的:获取某网站某用户下市场大于1000秒的视频信息

1.本想通过接口获得结果,但是使用post发送信息到接口,提示服务端错误。

2.通过requests获取页面结果,使用html解析工具,发现麻烦而且得不到想要的结果

3.直接通过selenium获取控件的属性信息,如图片、视频地址,再对时间进行筛选。将信息保存到以id命名的文件夹下

# -*- coding:utf-8 -*-
from selenium import webdriver
import sys,os,requests,shutil
class GetUserVideo():
    def __init__(self,driver,id):
        self.id = str(id)
        self.driver = driver
        self.base_url = "http://www.xxxxx.com/user/%s?t=2"%(self.id)

    def get_pagecounts(self):
        #获取页面数
        self.driver.get(self.base_url)
        page_counts=int(self.driver.find_elements_by_xpath("//div[@class=‘page‘]/a")[-2].text)+1
        return page_counts
    def get_video(self,driver,page,f):
        video_times = driver.find_elements_by_xpath("//i[@class=‘continue_time‘]")
        video_urls = driver.find_elements_by_xpath("//div[@class=‘video‘]/a[@class=‘url‘]")
        video_imgs = driver.find_elements_by_xpath("//a[@class=‘url‘]/img")
        length = len(video_times)
        for i in range(length):
            " 当前页面内筛选出时长大于1000秒的,并将图片、时长、地址保存到指定目录"
            time_list = video_times[i].text.split(":")
            time_count = int(time_list[0]) * 3600 + int(time_list[1]) * 60 + int(time_list[2])
            if time_count > 1000:
                video_time = video_times[i].text
                video_url = video_urls[i].get_attribute(‘href‘)
                video_img = video_imgs[i].get_attribute("src")
                img_name = str(page) + "_" + str(i)+"_"+os.path.basename(video_img)
                f.write(img_name + "\t")
                f.write(video_time + "\t")
                f.write(video_url + "\n")
                img_url = requests.get(video_img)
                with open(self.id + "/" + img_name, "wb") as b:
                    b.write(img_url.content)
    def test(self):
        "如果存在同名文件夹,就删除"
        if os.path.exists(self.id):
            shutil.rmtree(self.id)
        os.mkdir(self.id)
        driver = self.driver
        page_counts=self.get_pagecounts()
        f=open(self.id+"/video.txt","w")
        for page in range(1,page_counts):
            detail_url = "&page=%s" % page
            driver.get(self.base_url+detail_url)
            self.get_video(driver,page,f)
        f.close()
        driver.quit()
if __name__=="__main__":
    path = sys.path[0].split("/")
    index = path.index("SeleniumOfJenkins") + 1
    ph_driver = "/driver/phantomjs-2.1.1-macosx/bin/phantomjs"
    if index == len(path):
        driver_path = sys.path[0] + ph_driver
    else:
        driver_path = "/".join(path[:index]) + ph_driver
    driver = webdriver.PhantomJS(executable_path=driver_path)
    driver.maximize_window()
    driver.implicitly_wait(10)
    test = GetUserVideo(driver,123456)
    test.test()

原文地址:https://www.cnblogs.com/csj2018/p/10061802.html

时间: 2024-08-28 01:34:50

python 使用selenium和requests爬取页面数据的相关文章

python(27)requests 爬取网页乱码,解决方法

最近遇到爬取网页乱码的情况,找了好久找到了种解决的办法: html = requests.get(url,headers = head) html.apparent_encoding html.encoding = html.apparent_encoding print html.text 头文件中添加: import sys reload(sys) sys.setdefaultencoding("utf-8")

使用scrapy爬取页面数据到入库遇到的问题

1.编码问题 页面是gbk的,数据库是utf8的 gbk到utf8的转化得通过unicode编码:gbk <--unicode-->utf8 具体参考 http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html scrapy从页面抓到的数据自动转化为unicode了所有把抓到的数据直接encode('utf8'),就变成utf8编码了 入库时发生了数据库中文乱码,原来python再连接mysql的时候需要制定编码格式 db=MySQL

Python+requests 爬取网站遇到中文乱码怎么办?

分类: Python/Ruby 最近刚开始使用python来做爬虫爬取相关数据,使用了python自带的urllib和第三方库requests,解析html使用了beautifulsoup以及lxml     这里说下lxml,lxml是python的一个html.xml解析库,lxml使用XPath能快速,简单的定位元素并获取信息.下面进入正题 1. 遇到的中文乱码问题 1.1 简单的开始     使用requests来拔取网站内容十分方便,一个最简单的代码段只需要2-3行代码就行. 点击(此

[实战演练]python3使用requests模块爬取页面内容

本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取响应状态码 5.案例演示 后记 1.安装pip 我的个人桌面系统用的linuxmint,系统默认没有安装pip,考虑到后面安装requests模块使用pip,所以我这里第一步先安装pip. $ sudo apt install python-pip 安装成功,查看PIP版本: $ pip -V 2.

用python进行网页爬取,数据插入数据库

用python进行网页信息的爬取还是很简单的,而且现在进行爬取的 在爬取之前,确定好自己的网页,然后用F12(查看网页源代码,然后确定网页的),这里就以一个简单的,页面布局简单的页面进行讲解:http://jbk.39.net/yyz/jbzs/ 先来看下页面的布局,以及我们想要进行页面的信息: 就这个页面,我们想要从这里面将页面中的疾病的名称,还有就是疾病的介绍,以及疾病的基本信息(是否属于医保.别名.发病部位.传染性...) 代码很简单: #!/usr/bin/env python # co

基于selenium实现自动化爬取数据

基于selenium实现自动化爬取数据 如果想具体查看selenium自动化模块的更多功能请看我的博客测试分类中有介绍 selenium 概念:基于浏览器自动化的模块 自动化:可以通过代码指定一系列的行为动作,然后将其作用到浏览器中. pip install selenium selenium和爬虫之间的关联 1.便捷的捕获到任意形式动态加载的数据(可见即可得) 2.实现模拟登录 谷歌驱动下载:http://chromedriver.storage.googleapis.com/index.ht

Python爬虫实战二之爬取百度贴吧帖子

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht

Python爬虫系列 - 初探:爬取旅游评论

Python爬虫目前是基于requests包,下面是该包的文档,查一些资料还是比较方便. http://docs.python-requests.org/en/master/ 爬取某旅游网站的产品评论,通过分析,获取json文件需要POST指令.简单来说: GET是将需要发送的信息直接添加在网址后面发送 POST方式是发送一个另外的内容到服务器 那么通过POST发送的内容可以大概有三种,即form.json和multipart,目前先介绍前两种 1.content in form Content

Python爬取房产数据,在地图上展现!

小伙伴,我又来了,这次我们写的是用python爬虫爬取乌鲁木齐的房产数据并展示在地图上,地图工具我用的是 BDP个人版-免费在线数据分析软件,数据可视化软件 ,这个可以导入csv或者excel数据. 首先还是分析思路,爬取网站数据,获取小区名称,地址,价格,经纬度,保存在excel里.再把excel数据上传到BDP网站,生成地图报表 本次我使用的是scrapy框架,可能有点大材小用了,主要是刚学完用这个练练手,再写代码前我还是建议大家先分析网站,分析好数据,再去动手写代码,因为好的分析可以事半功