博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬虫3——获取审查元素(板野友美吧图片下载)
阅读量:4578 次
发布时间:2019-06-08

本文共 1290 字,大约阅读时间需要 4 分钟。

测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0

测试网址:http://tieba.baidu.com/p/2827883128

目的是下载该网页下所有图片,共160+张。可以分为以下几步:

1、获取网页源代码。

发现直接通过urllib2或者request获取到的源代码和实际图片对应不起来,通过chrome审查元素功能可以查询到对应的图片,猜测是该页面的图片加载是通过ajax异步传输的。因此使用工具selenium + chromedriver实现。安装好selenium+chromedriver之后,即可获取到需要的源代码。

2、分析获取到的源代码,找出图片的实际地址然后下载。过程与类似。之前分析源码都是直接通过正则表达式实现,建议学习下,更方便。

实际程序运行后发现,只能获取到40张图片。原因是页面加载完成后,只有40张图片。如果需要获取全部图片,需要在页面加载完成之前,手动往下滑动滚轮,之后浏览器继续发送ajax请求给服务器,获取其他的图片。该方法实际测试可行,可以获取全部图片。

但是!手动操作这种方法太low了!以下是我的猜想:1、是否可以直接通过分析源代码中的js部分,直接提取出所有向后台服务器发送ajax请求的代码,一次性发送出去从而得到所有图片的地址? 2、是否可以通过js或者selenium,在加载页面的时间段,模拟滚轮动作,从而实现功能。方法2我实际测试了下,由于水平有限,不熟悉js,没有成功。附代码:

# -*- coding: utf-8 -*-import requestsfrom bs4 import BeautifulSoupfrom selenium import webdriverdriver = webdriver.Chrome()url = "http://tieba.baidu.com/p/2827883128"driver.get(url)try:    # driver.implicitly_wait(20)    # driver.find_element_by_id("ag_main_bottombar")    # js="var q=document.body.scrollTop=10000"    # driver.execute_script(js)    sourcePage = driver.page_source    soup = BeautifulSoup(sourcePage, "lxml")    images = soup.find_all(class_ = "ag_ele_a ag_ele_a_v")    print(len(images))    for image in images:        print(image)finally:    # pass    driver.quit()

 

转载于:https://www.cnblogs.com/everSeeker/p/5023699.html

你可能感兴趣的文章
bzoj1061: [Noi2008]志愿者招募
查看>>
推荐一款开源、免费的标记语言转换工具,各种文档格式自由转换
查看>>
Erlang基础Mnesia 之应用场景(Why)
查看>>
java使用SimpleDateFormat实现字符串和日期的相互转换
查看>>
JDK动态代理
查看>>
od 转储 二进制文件常用命令
查看>>
HDU 2136 Largest prime factor 參考代码
查看>>
Matlab---串口操作---数据採集篇
查看>>
有趣Web之Json(四)---json与(Object/List/Map)相互转化
查看>>
SQL于DML(数据库操作语言)采用
查看>>
静态库和动态库
查看>>
移位寄存器
查看>>
java环境变量配置
查看>>
Win32K里的死循环
查看>>
C ++ 插入迭代器
查看>>
python修改字典的值(update map value)
查看>>
iOS6开发----应用集合视图(UICollectionView)-创建基于Storyboard的集合视图应用程序...
查看>>
详解EBS接口开发之更新供应商付款方法
查看>>
《java入门第一季》之ArrayList集合小案例
查看>>
python之路——函数(进阶)
查看>>