#用selenium打开百度首页

#第一次运行代码时应该在safari开发者选项中设置'allow remote automation'

 from selenium import webdriver
browser=webdriver.Safari()
browser.get('http://www.baidu.com/')

#远程打开百度首页,并搜索关键词并打印搜索关键词后的源代码

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Safari()
driver.get('http://www.baidu.com/') #获取web中名字为wd的标签
elem = driver.find_element_by_name("wd")
#搜索cxy61
elem.send_keys("cxy61")
elem.send_keys(Keys.RETURN) print driver.page_source

分析网页源代码

#safari偏好设置中点击在菜单中显示'开发者’选项

#在开发中点击显示网页检查器(command+option+i)

打印我们筛选后真正需要的爬下来的数据

 #coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys dr = webdriver.Safari()
dr.get('https://www.qiushibaike.com')
#在控制台中发现糗事百科左边都是内容,右边是广告,而左边标签id都是content-left
#获取id为content-left的[标签]
main_content = dr.find_element_by_id('content-left')
content = main_content.find_elements_by_class_name('content')
i=1
for want2see in content:
print str(i)+want2see.text+'\n'
i+=1 #退出我们打开的浏览器
dr.quit()

用类封装实现爬虫

 #coding:utf-8
from selenium import webdriver
class Qiubai(object):
def __init__(self):
#这步干嘛
self.dir=webdriver.Safari()
#所以在初始化实例时还能进行打开网页的操作
self.dir.get('https://www.qiushibaike.com') def print_content(self):
#相比较于没有用类实现的爬虫,dir放在__init__方法中定义
#下面两行代码中的element和elements的区别?
main_content=self.dir.find_element_by_id('content-left')
self.content = main_content.find_elements_by_class_name('content')
i=1
for con in self.content:
print str(i)+con.text+'\n'
i+=1
#还可以在类的方法中调用该类中定义的另一个方法
self.quit() def quit(self):
self.dir.quit()
#这里Qiubai()是Qiubai的一个实例,只是没有设置一个变量指向这个实例而已
Qiubai().print_content()

效果:

程序媛计划——python爬虫的更多相关文章

  1. 程序媛计划——python socket通信

    定义 socket 是进程间的一种通信方式,可以实现不同主机间的数据传输 #写服务期端程序server.py #实现服务器向客户端连接 #!/usr/bin/env python #coding:ut ...

  2. 程序媛计划——python数据库

    #实例:用数据库存储日记,实现日记本功能 #流程 #创建数据库 #coding:utf-8 import sqlite3 connect=sqlite3.connect('test.db') conn ...

  3. 程序媛计划——python中级课时1

    class1 异常处理 #python会把标准输入的内容当作字符串处理,即使输入的是数字3也会转化为字符串’3’. n1 = raw_input() n2 = raw_input() print n1 ...

  4. 程序媛计划——python正则表达式

    #定义 正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容,如判断一串数字是否是电话号码. #原理 先把正则表达式的字符串转换成 Pattern 对象,接着用这个对象处理文本 ...

  5. 程序媛计划——python初级课时3~5

    产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...

  6. 程序媛计划——python初级课时1~2

    在命令行中运行py文件:python 文件路径/文件名 python变量必须赋值后才能使用,因为py变量只有赋值后才会被创建. py可以同时给多个变量赋值:a,b,c = 10,20,'dfjkdj' ...

  7. 程序媛计划——python初级class5~13

    列表和元组都是可迭代对象(可以用于for in) 列表 [] #添加列表元素: list.append(argu) #修改列表: list[2] = 2017 #删除列表元素 Del list[2] ...

  8. 程序媛计划——SQLite初级

    数据库简介 数据库定义: 指的是以一定方式储存在一起.能为多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合.是带有相关数据的表的集合. 数据库是由行和列组成的二维表. 字段: 数据库表 ...

  9. 程序媛计划——mysql外键

    定义 外键:如果一个表的某个字段指向另一个表的主键,就称之为外键.被指向的表,称之为主表,也叫父表,那么另一个表就是从表,也叫子表 #先新建两个表 mysql> create table aut ...

随机推荐

  1. CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板

    C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using Syste ...

  2. code4906 删数问题

    题目: 键盘输入一个高精度的正整数n(<=240位), 去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数. 编程对给定的n和s,寻找一种方案,使得剩下的数最小. Simple Inp ...

  3. 20155317 王新玮 2016-2017-2 《Java程序设计》第9周学习总结

    20155317 王新玮 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以 ...

  4. 管理型交换机IEEE 802.1Q VLAN设置应用实例

    转载标注: IEEE802.1Q 我粗略理解为对交换机入口规则和出口规则设置,入口打上VID,设置从哪些口可以出去,并且是否带标签. 一 VLAN的概念 VLAN(Virtual Local Area ...

  5. 流程控制 if while for 已及数字类型 进制转换

    一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...

  6. 第二章:冠词(Les articles)

    ★定冠词(Les articles définis ): 阳性单数:le(l') 阴性单数:la(l') 阴阳性复数:les ()表示前面已经提到的人或事物: ()有关的名词已被其它的成分(补语,关系 ...

  7. hadoop学习笔记(一):概念和组成

    一.什么是hadoop Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架.它支持在商品硬件构建的大型集群上运行的应用程序.Hadoop是根据G ...

  8. java.lang.String cannot be cast to java.util.Date

    我这个是个新建的功能,然后在保存的时候出现了这个错误.然后就找到了新建的action,发现其上的list方法出了问题. 这样是正确的.之前list<Constract>写成这样了.

  9. 8) pom.xml

    http://maven.apache.org/ref/3.3.3/maven-model/maven.html 执行mvn命令的时候默认文件名pom.xml 也可以通过 -f 指定 比如 mvn - ...

  10. OpenGL + MFC

    OpenGL超级宝典(中文版) 2001年 本书是一本完整而详尽的关于OpenGL的参考书,全书分为四部分:第一部分“OpenGL导言”介绍3D图形学的基本原理,读者将在此学会构造使用OpenGL的程 ...