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()
python 使用selenium和requests爬取页面数据的更多相关文章
- Python爬虫入门——使用requests爬取python岗位招聘数据
爬虫目的 使用requests库和BeautifulSoup4库来爬取拉勾网Python相关岗位数据 爬虫工具 使用Requests库发送http请求,然后用BeautifulSoup库解析HTML文 ...
- python 爬虫之requests爬取页面图片的url,并将图片下载到本地
大家好我叫hardy 需求:爬取某个页面,并把该页面的图片下载到本地 思考: img标签一个有多少种类型的src值?四种:1.以http开头的网络链接.2.以“//”开头网络地址.3.以“/”开头绝对 ...
- python(27)requests 爬取网页乱码,解决方法
最近遇到爬取网页乱码的情况,找了好久找到了种解决的办法: html = requests.get(url,headers = head) html.apparent_encoding html.enc ...
- python+requests抓取页面图片
前言: 学完requests库后,想到可以利用python+requests爬取页面图片,想到实战一下.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图片,所以我选取饿 ...
- [实战演练]python3使用requests模块爬取页面内容
本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取 ...
- scrapy中使用selenium来爬取页面
scrapy中使用selenium来爬取页面 from selenium import webdriver from scrapy.http.response.html import HtmlResp ...
- 爬虫-----selenium模块自动爬取网页资源
selenium介绍与使用 1 selenium介绍 什么是selenium?selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. sel ...
- 一个月入门Python爬虫,轻松爬取大规模数据
Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得 ...
- Python3 Scrapy + Selenium + 阿布云爬取拉钩网学习笔记
1 需求分析 想要一个能爬取拉钩网职位详情页的爬虫,来获取详情页内的公司名称.职位名称.薪资待遇.学历要求.岗位需求等信息.该爬虫能够通过配置搜索职位关键字和搜索城市来爬取不同城市的不同职位详情信息, ...
随机推荐
- 拷贝构造函数(define)
1.拷贝构造函数是一种特殊的构造函数,具有单个形参,此形参是对该类型的引用. 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显示使用拷贝构造函数. 2.当将该类型的对象传递给函数或从函数返回 ...
- “开始菜单”按钮今年8月将重回Windows 8
本月早些时候微软明确表示,“开始菜单”将重新回归Windows 8操作系统.尽管微软当时并没有公布具体的时间表,但据熟悉微软内部运作的消息灵通人士透露称,“开始菜单”极有可能将出现在预计于今年8月发布 ...
- 项目使用Nuget,然后SVN checkout后显示缺少引用
如下图黄色叹号: 解决方案: 1.先生成解决方案 2.执行如下: 这时候Nuget是存在了,但是还是显示缺少引用: 那么最后一步, 输入 :Update-Package -reinstall
- <xsd:import>
最近研究wsdl文件发现在生成客户端代码时报错了, WSDLException (at /wsdl:definitions/wsdl:types/xsd:schema): faultCode=OTHE ...
- Tesseract-OCR 训练教程(二) 合并新的训练文件
在原有训练数据的基础上,如果有新的字符训练信息需要加入,所有数据重新校准一遍就累死人了.... 经研究找到实用合并方法(红色部分为示例,实际应为你自己生成的文件名): 在新的训练数据生成.box 和. ...
- 使用easyui将json数据生成数据表格
1.首先需要用script引入jquery和easyui文件.如图所示: 2.html页面设置如下: data-options里面设置的属性可根据需要自己定义,是否单选,是否设置分页等等. 3.引入e ...
- 转:HTML5中的element.dataset
使用HTML5中的 element.dataset 操作自定义 data-* 数据: 不久之前我向大家展示了非常有用的classList API,它是一种HTML5里提供的原生的对页面元素的CSS类进 ...
- GPIO口的输入输出模式
1.浮空输入 GPIO_Mode_IN_FLOATING 2.带上拉输入 GPIO_Mode_IPU 3.带下拉输入 GPIO_Mode_IPD 4.模拟输入 ...
- mos如何工作参考地址
https://wenku.baidu.com/view/c118c3fb360cba1aa811da9d.html?qq-pf-to=pcqq.c2c
- hdu5229
bc41第二题: 题意:两个人有 n 个串,随机选出两个串,可以进行这样的操作:①选一个串消去最后一个字符,②若两串相同则可以全部消去两串 若到某个人时正好消去两个串,则这个人胜另一人负,问先手胜概率 ...