python版本:3.8

pip install BeautifulSoup4

pip install selenium

pip install requests

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from bs4 import BeautifulSoup

import time

import requests

#选择浏览器驱动(还可以选择webdriver.Firefox;webdriver.Ie;相关浏览器的驱动需要自行下载)

driver = webdriver.Chrome(executable_path="F:\code\简书\chromedriver")

driver.get("http://www.baidu.com")

#下一行是用assert的方式确认标题是否包含“Python”一词

assert "百度" in driver.title

#如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。

driver.implicitly_wait(5) # seconds

#在浏览器搜索栏插入python

driver.find_element_by_id('kw').send_keys('python')

# 模拟回车操作 ,开始搜索

driver.find_element_by_id('su').send_keys(Keys.ENTER)

driver.implicitly_wait(3) # seconds

#此处如果不sleep,下面获取到的数据可能为空 (https://blog.csdn.net/manmanxiaowugun/article/details/89646135)

time.sleep(3)

# 使用BeautifulSoup解析搜索结果

#bsobj = BeautifulSoup(driver.page_source, features="html.parser")

# 获取搜索结果队列

#search_results = bsobj.find_all('div', {'class': 'result c-container'})

"""

此处使用的是find_elements_by_css_selector,

根据其右键“下一页”的检查获取到其js path并进行修改:document.querySelector("#page > div > a:nth-child(12)")

pop() 函数用于获取列表中的一个元素(默认为最后一个元素),并且返回该元素 的值。pop()或 pop(-1)默认获取一组元素中的最后一个

driver.find_elements_by_css_selector("#page > div > *").pop().click()

driver.find_element_by_css_selector("#page > div > a.[nth-last-child(1)]")不知为何不生效???????????

"""

def get_real_url(url):

try:

#如果不设置timeout,会导致下面出结果较慢,超时后直接返回百度的链接(example:http://www.baidu.com/link?url=TMx1usYKo-ncZAXpBq4rjaJ535T9G78lQyuxANxqHAQ9Ckwt7JVh4s89C1yEJ6a7vsGuef6Qa2dWMuXinJnpBa)

real_url=requests.get(url, timeout=1).url

return real_url

except:

return url

#取前两页的标题和链接地址

for i in range(2):

driver.implicitly_wait(3) # seconds

bsobj = BeautifulSoup(driver.page_source, features="html.parser")

search_results = bsobj.find_all('div', {'class': 'result c-container'})

for iteam in search_results:

print (iteam.h3.a.get_text(strip=True) + " " + get_real_url(iteam.h3.a.get('href')))

#刷新当前页面要不然获取下一页元素是会报错(" stale element reference: element is not attached to the page document" 陈旧元素引用:元素没有附加到页面文档中)

print ('\n')

driver.refresh()

driver.find_elements_by_css_selector("#page > div > *").pop().click()

"""

当你向通过CSS选择器查找元素时使用这个。 在该策略下,页面中第一个匹配该CSS 选择器的元素 会被匹配并返回。如果找不到任何元素,会抛出 NoSuchElementException 异常。

作为示例,页面元素如下所示:

Site content goes here.

"""

#driver.find_element_by_css_selector('div.result')

"""

#test用

time.sleep(5)

#实例化函数

elem = driver.find_element_by_id('kw')

#清空搜索项

elem.clear()

#插入搜索项目

elem.send_keys("pycon")

#回车

elem.send_keys(Keys.RETURN)

assert "No results found." not in driver.page_source

"""

driver.close()

最终输出结果:

关于页面元素的获取:

在所需要位置右键点击检查

自动跳转到你需要的元素信息位置,可以通过移动鼠标到其他元素信息上看到对应页面的内容

获取元素位置

根据不同的种类可以使用Selenium不同的方法

python 百度搜索结果 浏览器 和终端不一致_python自动爬取百度搜索结果相关推荐

  1. python爬取qq好友_Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)...

    一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...

  2. python如何爬取百度云_python如何爬取百度云连接方法指导

    本篇文章主要介绍了python urllib爬取百度云连接的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 翻看自己以前写的程序,发现写过一个爬取盘多多百度云资源的东西,完全是当时想看变形 ...

  3. 如何使用python爬取百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

  4. python爬去百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

  5. python爬虫百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

  6. Python爬虫实战,简单的爬虫案例,以及爬取百度贴吧网页原码和360翻译

    一.爬取网页上的图片 import requestsresponse = requests.get("http://file.elecfans.com/web1/M00/8B/33/o4YB ...

  7. python爬去百度文库资料_python urllib爬取百度云连接的实例代码

    翻看自己以前写的程序,发现写过一个爬取盘多多百度云资源的东西,完全是当时想看变形金刚才自己写的,而且当时第一次接触python大概写了有2天才搞出来这个程序,学习python语言,可以看得出来那时候的 ...

  8. python百度贴吧怎么爬取最早的帖子_Python爬虫爬取百度贴吧的帖子

    同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python #_*_coding:utf-8_*_ import urllib import ur ...

  9. python爬虫教学百度云_python爬虫爬取百度网盘-怎么做一个百度网盘搜索引擎

    因为要做去转盘网,所以一定要爬取网盘资源,本来想自己写一个爬虫挺不容易的,不想分享出来,但最后还是决定了拿给大家一起看吧,毕竟有交流才有进步,有兴趣的朋友也可以看看我写的其他日志或者关注我,会发现去转 ...

最新文章

  1. 计算机虚拟网络毕业论文,计算机毕业论文——基于WEB的虚拟计算机网络实验平台.doc...
  2. 对象序列化实现深度克隆
  3. Tomcat容器、JSP和Servlet
  4. pycharm里创建django项目竟然没有django选项
  5. RN style使用以及常用样式总结
  6. idea前进和后退快捷键_PR快捷键大全(喜欢记得收藏!)
  7. springMVC文件上传的三种方法
  8. ServerVariables 变量
  9. python中函数包括_python中有哪些函数
  10. CSS样式(内联、内部、外部)
  11. [C++系列] 66. 超详解C++阶段性总结思维导图
  12. WEB-INF与META-INF详解
  13. 查错集|No.1解决Undefined symbol xxx (referred from xxx.o)问题
  14. 赢在2022,面试官常问的软件测试面试题总结
  15. CSS实现三角形、扇形、半圆以及圆形
  16. 数独求解程序(暴力求解)
  17. 晶振串联电阻与并联电阻有什么作用?
  18. 罗杰斯:不看好房地产股票 最佳投资是大宗商品
  19. 鸭子的应聘,我是学c++的
  20. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.9 逆光拍摄透明体

热门文章

  1. 【JavaScript-9】Javascript中的布尔值和等式
  2. Excel数据透视表经典教程七《刷新及更改数据源》
  3. java代码json_JSON 解析(java代码)
  4. 阿里大促,「技术负责人」如何做技术保障?
  5. 2011网易校园招聘笔试题
  6. 【每天听见吴晓波-2016-07-04】上海房价未来五年还会翻番
  7. 怎么解决这个问题?救救孩子吧
  8. Element ui Avatar头像管理组件 实现当用户没有头像时 以名称最后一个字为头像
  9. Express框架简介
  10. nuxt中客户端呈现的虚拟DOM树与服务器呈现的内容不匹配