#用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. Spring框架的配置文件分开管理(了解)

    1. 例如:在src的目录下又多创建了一个配置文件,现在是两个核心的配置文件,那么加载这两个配置文件的方式有两种! * 主配置文件中包含其他的配置文件: <import resource=&qu ...

  2. LaTeX 公式(转自)Iowa_Battleship 神犇

    传送门 (我这个蒟蒻只是mark一下 这个LaTex公式很全!!我是照着打数学公式的!! orz大佬Iowa

  3. oracle 表分区例子

    oracle表分区详解-一步一步教你oracle分区表详解   .创建三个不同的表空间,模拟在不同磁盘上的保存不同范围的数据    create tablespace test01 datafile ...

  4. msys2 启用windows PATH环境变量

    有三种方法修改 ①msys2_shell.cmd 中取消一行的注释:set MSYS2_PATH_TYPE=inherit ②调用msys2_shell.cmd时使用-use-full-path参数 ...

  5. 13.11.20 jquery 核心 siblings() 获得同类(不包含自己)循环所有,

    jquery 核心1.选择器,2. 创建dom 元素 3. jquery 执行时 4. 延迟执行 5. 循环 6. 计算长度.7.8 获得选择器和所在节点 9. 获得下标 10. 元素存放数据  11 ...

  6. jQuery获得元素位置offset()和position()的区别

    jQuery获得元素位置offset()和position()的区别 jQuery 中有两个获取元素位置的方法offset()和position(),这两个方法之间有什么异同 offset(): 获取 ...

  7. 492. Construct the Rectangle

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  8. 2018.10.14 loj#516. DP 一般看规律(启发式合并)

    传送门 注意到一种颜色改了之后就不能改回去了. 因此可以启发式合并. 每次把小的合并给大的. 这样每个数最多被合并logloglog次. 如果维护一棵比较下标的平衡树的话,对于答案有贡献的就是每个数与 ...

  9. Java带图片预览功能的图片上传兼容火狐ie

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. IntelliJ IDEA 2017版 spring-boot 实现jpa基本部署,通过实体类自动建立数据库

    一.添加Spring Boot JPA-Hibernate步骤 1.在pom.xml添加mysql,spring-data-jpa依赖      2.在application.properties文件 ...