python 百度搜索结果 浏览器 和终端不一致_python自动爬取百度搜索结果
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自动爬取百度搜索结果相关推荐
- python爬取qq好友_Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)...
一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...
- python如何爬取百度云_python如何爬取百度云连接方法指导
本篇文章主要介绍了python urllib爬取百度云连接的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 翻看自己以前写的程序,发现写过一个爬取盘多多百度云资源的东西,完全是当时想看变形 ...
- 如何使用python爬取百度图片_python实现爬取百度图片的方法示例
本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...
- python爬去百度图片_python实现爬取百度图片的方法示例
本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...
- python爬虫百度图片_python实现爬取百度图片的方法示例
本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...
- Python爬虫实战,简单的爬虫案例,以及爬取百度贴吧网页原码和360翻译
一.爬取网页上的图片 import requestsresponse = requests.get("http://file.elecfans.com/web1/M00/8B/33/o4YB ...
- python爬去百度文库资料_python urllib爬取百度云连接的实例代码
翻看自己以前写的程序,发现写过一个爬取盘多多百度云资源的东西,完全是当时想看变形金刚才自己写的,而且当时第一次接触python大概写了有2天才搞出来这个程序,学习python语言,可以看得出来那时候的 ...
- python百度贴吧怎么爬取最早的帖子_Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python #_*_coding:utf-8_*_ import urllib import ur ...
- python爬虫教学百度云_python爬虫爬取百度网盘-怎么做一个百度网盘搜索引擎
因为要做去转盘网,所以一定要爬取网盘资源,本来想自己写一个爬虫挺不容易的,不想分享出来,但最后还是决定了拿给大家一起看吧,毕竟有交流才有进步,有兴趣的朋友也可以看看我写的其他日志或者关注我,会发现去转 ...
最新文章
- 计算机虚拟网络毕业论文,计算机毕业论文——基于WEB的虚拟计算机网络实验平台.doc...
- 对象序列化实现深度克隆
- Tomcat容器、JSP和Servlet
- pycharm里创建django项目竟然没有django选项
- RN style使用以及常用样式总结
- idea前进和后退快捷键_PR快捷键大全(喜欢记得收藏!)
- springMVC文件上传的三种方法
- ServerVariables 变量
- python中函数包括_python中有哪些函数
- CSS样式(内联、内部、外部)
- [C++系列] 66. 超详解C++阶段性总结思维导图
- WEB-INF与META-INF详解
- 查错集|No.1解决Undefined symbol xxx (referred from xxx.o)问题
- 赢在2022,面试官常问的软件测试面试题总结
- CSS实现三角形、扇形、半圆以及圆形
- 数独求解程序(暴力求解)
- 晶振串联电阻与并联电阻有什么作用?
- 罗杰斯:不看好房地产股票 最佳投资是大宗商品
- 鸭子的应聘,我是学c++的
- 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.9 逆光拍摄透明体